一些程序员认为在另一个函数中定义一个函数称为“嵌套函数”。但是实际情况是它不是一个嵌套函数,它被视为词汇作用域。词法作用域在C中无效,因为编译器无法达到/找到内部函数的正确内存位置。
嵌套函数不被C支持,因为我们不能在C.我们可以声明函数内部函数的其他函数中定义一个函数,但它不是一个嵌套函数。
由于嵌套函数定义无法访问周围块的局部变量,因此它们只能访问包含模块的全局变量。这样做是为了不必在目录中遍历全局变量。像在C中一样,有两个嵌套作用域:局部作用域和全局作用域(除此之外,是内置的)。因此,嵌套函数只有有限的用途。如果尝试在C中使用嵌套函数,则将得到编译时错误。
// C program to illustrate the
// concept of Nested function.
#include
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
int main(void)
{
auto int view(); // declare function with auto keyword
view(); // calling function
printf("Main\n");
int view()
{
printf("View\n");
return 1;
}
printf("GEEKS");
return 0;
}
输出:
view
Main
GEEKS
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。