【问题标题】:GCC: Is it possible to disable the "comma at end of enumerator list" warning when using -pedantic?GCC:是否可以在使用 -pedantic 时禁用“枚举器列表末尾的逗号”警告?
【发布时间】:2009-06-16 16:01:11
【问题描述】:

我正在编译 C++ 代码,我想启用 -pedantic 选项。
我正在使用 GCC 4.0,在 Mac OS X Leopard 上运行 Xcode。
例如,可以允许使用 -pedantic(使用 -Wno-variadic-macros 和 -Wno-long-long)时通常禁止的可变参数宏和 long long 类型。 但我找不到任何东西来禁用“枚举器列表末尾的逗号”警告。
有可能吗?

谢谢。

【问题讨论】:

    标签: gcc enums


    【解决方案1】:

    枚举器末尾的逗号在 C99 中有效,但在 C89 中无效,因此如果您的代码是有效的 C99,则以下内容将起作用

    gcc -std=c99 -pedantic foo.c
    

    我相当确定它在 C++(根据 g++)中根本无效

    编辑:在 HP-UX 上使用 GCC 4.2.1 对其进行了测试,并且没有错误/警告。 foo.c

    int main(int argc, char** argv) {
        enum { A, B, };
        return 0;
    }
    
    
    gcc -std=c99 -pedantic foo.c
    

    【讨论】:

    • 确实,使用“-std=c89”时会收到警告。使用“-std=99”时没有警告。但是如果我把 foo.c 变成 foo.cpp 就会出错。那是我的问题...
    • 如果是 .c 文件,那么 GCC 使用 C 编译器。如果是 .cc 或 .cpp 文件,GCC 使用 C++ 编译器。您的代码不是合法的 C++,因此会出现错误。
    【解决方案2】:

    在 C++ 中还不能禁用它,即使它在 C++11 中是合法的。 所以以后在修正 GCC 时,-std=c++11 应该禁用它。

    -std=c99 仅适用于 C,而不适用于 C++(如问题所示)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2022-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多