吾爱程序员:这里有好玩的游戏和软件
当前位置:首页C语言教程 → C中的嵌套函数

C中的嵌套函数

来源:网络 | 更新时间:2022-01-15 19:49:19
一些程序员认为在另一个函数中定义一个函数被称为“嵌套函数”。但实际情况是它不是嵌套函数,它被视为词法作用域。词法作用域在 C 中无效,因为编译器无法到达/找到内部函数的正确内存位置。 C不支持嵌套函数,因为我们不能在 C 中的另一个函数中定义一个函数。我们可以在函数中声明一个函数,但它不是嵌套函数。 因为嵌套函数定义不能访问周围块的局部变量,所以它们只能访问包含模块的全局变量。这样做是为了不必通过目录查找全局变量。与在 C 中一样,有两个嵌套范围:本地和全局(除此之外,还有内置)。因此,嵌套函数的用途有限。如果我们尝试在 C 中处理嵌套函数,那么我们将得到编译时错误。
// C program to illustrate the
// concept of Nested function.
#include <stdio.h>
int main(void)
{
printf("Main");
int fun()
{
printf("fun");

// defining view() function inside fun() function.
int view()
{
printf("view");
}
return 1;
}
view();
}
输出:
Compile time error: undefined reference to `view'
GNU C 编译器的扩展允许嵌套函数的声明。GCC 扩展下的嵌套函数声明需要以auto 关键字作为前缀/开头。
// C program of nested function
// with the help of gcc extension
#include <stdio.h>
int main(void)
{
auto int view(); // declare function with auto keyword
view(); // calling function
printf("Mainn");

int view()
{
printf("Viewn");
return 1;
}

printf("52cxydh");
return 0;
}
输出:
view
Main
52cxydh

最新文章

热点资讯

手游排行榜

CopyRight 2020-2030吾爱程序员

鄂ICP备2021004581号-8

本站资源收集于网络,如有侵权请联系我们:35492删除0109@qq.com