c++ - 为什么我可以在另一个函数中定义一个函数?

标签 c++ c gcc

看下面的代码,我在另一个函数中定义了一个函数,

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 会,否则不推荐

关于c++ - 为什么我可以在另一个函数中定义一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16582677/

相关文章:

linux - 在较旧的 Linux Svrs (Redhat EL 5.7) 上使用最新的 GCC(4.8.1)

c - 在哪里可以找到 gcc 扩展属性的引用

c - 检查 __restrict 关键字可用性的好方法是什么?

c++ - 子类地址等于虚拟基类地址?

c++ - 从 Find Max 方法返回一个 int 值并在测试文件中打印该值

c - scanf 中的段错误

c - 如何在 Python C API 中获取返回的 PyObject 的指针?

c++ - 常量值运行时评估

c++ - 有没有办法从整数获取模板类型?

c - 如何通过C中的PID监视外部进程的事件?