C中的嵌套函数
在某些应用程序中,我们已经看到一些函数在另一个函数中声明。有时称为嵌套函数,但实际上不是嵌套函数。这称为词汇作用域。在C语言中,词法作用域无效,因为编译器无法到达内部函数的正确内存位置。
嵌套函数定义无法访问周围块的局部变量。他们只能访问全局变量。在C语言中,有两个嵌套作用域:局部作用域和全局作用域。因此,嵌套函数的用途受到限制。如果我们想创建如下的嵌套函数,它将产生错误。
示例
#include <stdio.h>
main(void) {
printf("Main Function");
int my_fun() {
printf("my_fun function");
//在第一个函数中定义另一个函数。
int my_fun2() {
printf("my_fun2 is inner function");
}
}
my_fun2();
}输出结果
text.c:(.text+0x1a): undefined reference to `my_fun2'
但是GNUC编译器的扩展允许声明嵌套函数。为此,我们必须在嵌套函数的声明之前添加auto关键字。
示例
#include <stdio.h>
main(void) {
auto int my_fun();
my_fun();
printf("Main Function\n");
int my_fun() {
printf("my_fun function\n");
}
printf("Done");
}输出结果
my_fun function Main Function Done
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练