我们可以在C中使用嵌套函数吗?嵌套函数有什么用?如果它们存在于C中,它们的实现是否因编译器而异?
嵌套函数是否允许使用任何其他语言?如果是,那么它们的意义何在?
看到这段代码
#include<stdio.h>
int main()
{
void test(void)
{
printf("test");
return;
}
printf("main");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个男女同校工作正常,并没有给出任何警告和错误.我不知道为什么会这样?这里我在其他函数定义中写了一个函数定义,所以它有效吗?
编辑:如果是,那么有任何用途吗?
为什么gcc需要添加这个功能作为扩展..这应该是任何用途吗?不是吗?!
今天我遇到了我从未听说过的嵌套功能.它只是GNU C的一部分吗?
这是一个嵌套函数的维基百科示例.
float E(float x)
{
float F(float y)
{
return x + y;
}
return F(3);
}
Run Code Online (Sandbox Code Playgroud)
从代码中看,嵌套函数看起来像C++内联函数.那么,是否有可能取出嵌套函数的地址?
编辑:
Adam给出的gcc链接说嵌套函数的代码是在堆栈上动态创建的.但是如何从堆栈运行代码?不应该在代码段中.