一些程序员认为在另一个函数中定义一个函数被称为“嵌套函数”。但实际情况是它不是嵌套函数,它被视为词法作用域。词法作用域在 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