看这段代码
#include<stdio.h>
int main()
{
void test(void)
{
printf("test");
return;
}
printf("main");
return 0;
}
这段代码运行良好,没有任何警告和错误。我不知道为什么会这样?
编辑:如果是这样的话,这个有用吗?
为什么gcc需要添加这些扩展功能...难道它没有任何用处吗?!
看这段代码
#include<stdio.h>
int main()
{
void test(void)
{
printf("test");
return;
}
printf("main");
return 0;
}
这段代码运行良好,没有任何警告和错误。我不知道为什么会这样?
编辑:如果是这样的话,这个有用吗?
为什么gcc需要添加这些扩展功能...难道它没有任何用处吗?!
定义嵌套函数(即在另一个函数内部定义函数)是有效的,唯一的限制是前一个函数的范围受到封闭函数的限制。这就像定义局部变量一样。您可以在此处找到更多信息:http://gcc.gnu.org/onlinedocs/gcc/Nested-Functions.html
是的,我们可以在其他函数中定义一个函数。我已经在gcc中编译了以下写入的行,并且成功地运行而没有显示错误。
#include<stdio.h>;
void main()
{
int sum()
{
int a=30, b=10, c=20, sum=0;
sum=a+b+c;
return sum;
}
int a;
a=sum();
printf("Sum = %d", a);
}
输出:60
Joachim提到的嵌套函数是GCC扩展的说法是正确的;你还问是否有任何用途:我看过数百个项目的源代码,从未见过任何人使用这个特定的GCC扩展。
我知道GCC有这个扩展。据我所知,它不是标准的一部分。