嵌套函数是C标准的一部分吗?
今天我遇到了我从未听说过的嵌套function。 它只是GNU C的一部分吗?
这是一个嵌套函数的维基百科示例。
float E(float x) { float F(float y) { return x + y; } return F(3); }
从代码看,嵌套函数看起来像是C ++内联函数。 那么,是否有可能取出嵌套函数的地址?
编辑:
Adam给出的gcc链接说嵌套函数的代码是在堆栈上动态创建的。 但是如何从堆栈运行代码? 不应该在代码段中。
不,它们不是C或C ++标准的一部分。 它们是GCC编译器中的GNU扩展。 有关更多信息,请参阅GCC手册 。 实际上可以采用嵌套函数的地址,这是使用一种名为trampolines的技术完成的,但要注意手册中列出的警告。
嵌套函数是GCC扩展 ,而不是标准C