使用-std = c99在gcc中嵌套函数

时间:2015-03-17 19:38:37

标签: c gcc

从我正在阅读下面的代码是无效的c99,但是我似乎能够使用gcc -std = c99编译它,据我所知,应该禁用允许嵌入式功能的GNU扩展。我似乎无法弄清楚为什么会这样。

int main() {
    int e() {
        printf("testing");
        return 0;
    };

    e();
    return 0;
}

1 个答案:

答案 0 :(得分:5)

为了获得有关不符合代码的警告,您还需要使用-pedantic标记,然后您将看到以下内容( see it live ):

warning: ISO C forbids nested functions [-Wpedantic]
 int e() {
 ^

要将此变为错误,您可以使用-Werror将警告变为错误或-pedantic-errors

来自standards support上的gcc文档:

  

要获得标准所需的所有诊断,您还应指定-pedantic(或-pedantic-errors,如果您希望它们是错误而不是警告)