从我阅读的代码来看,下面的代码是无效的c99,但是我似乎能够使用gcc-std=c99编译它,据我所知,它应该禁用允许嵌入函数的GNU扩展。我好像搞不懂为什么会这样。

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

    e();
    return 0;
}

最佳答案

为了获得关于不一致代码的警告,您还需要使用-pedantic标志,然后您将看到以下(see it live):

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

要将此转换为错误,可以使用-Werror将警告转换为错误或-pedantic-errors
从gcc文件中:
要获得标准要求的所有诊断,还应指定-pedantic(如果希望它们是错误而不是警告,则指定-pedantic errors)

关于c - 使用-std = c99在gcc中嵌套函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29108187/

10-09 13:15