看到这段代码
#include<stdio.h>
int main()
{
    void test(void)
    {
        printf("test");
        return;
    }
printf("main");
return 0;
}
这个男女同校工作正常,并没有给出任何警告和错误.我不知道为什么会这样?这里我在其他函数定义中写了一个函数定义,所以它有效吗?
编辑:如果是,那么有任何用途吗?
为什么gcc需要添加这个功能作为扩展..这应该是任何用途吗?不是吗?!
函数定义的嵌套依赖于GCC扩展来工作.标准没有描述.
如果您希望您的代码与其他编译器一起使用,那么您应该避免使用这些技术.更重要的是,如果你与其他开发人员合作,我预测他们中的许多人会不喜欢使用这种非标准结构.
我不是GCC的专家,但我很确定有禁用扩展的编译器选项.这将允许您获取编译器以确保您不编写无法与其他编译器一起编译的代码.
关于您的更新,有嵌套函数的用途.它们可以通过限制范围和可见性来帮助封装.然而,没有任何问题不能很好解决的充分没有嵌套函数,我想解释了为什么他们是一个很少使用的GCC特点.