看下面的代码,我在另一个函数中定义了一个函数,
void test1(void)
{
void test2(void)
{
printf("test2\n");
}
printf("test1\n");
}
int main(void)
{
test1();
return 0;
}
这个用法很奇怪,是c89/c99的用法还是只是gcc的扩展(我在ubuntu 12编译时用的是gcc 4.6.3)。我运行这段代码,它输出“test2”和“test1”。test2 只能在 test1 中调用。
请问这个用法的常见场景是什么或者这个用法有什么用?
最佳答案
是的,这是一个GCC extension .
它不是 C,它不可移植,因此除非您知道 GCC 会,否则不推荐
- 成为唯一用于构建代码的编译器
- 将在未来的版本中继续支持此功能
- 不关心principle of least astonishment .
关于c++ - 为什么我可以在另一个函数中定义一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582677/