【问题标题】:how to disable gcc warning "cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]"如何禁用 gcc 警告“cc1:警告:命令行选项‘-std=c++11’对 C++/ObjC++ 有效,但对 C 无效 [默认启用]”
【发布时间】:2013-12-09 05:41:24
【问题描述】:

我是 cmake 和 gcc 的新手。 我在公司的新角色中的第一个任务是清除我们的 linux 编译中的错误 我做了大部分,现在我看到的唯一警告是

cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]

我希望 wither 抑制警告或解决 cmake 文件中的问题。 不幸的是,我仍然没有找到适合这里的正确 -Wno-xxx 声明。

谢谢!

【问题讨论】:

    标签: c gcc cmake gcc-warning


    【解决方案1】:

    可以使用-Wno-xxx 选项消除代码问题警告,因为有时您无法控制源代码。但是,告诉您 命令行选项 不正确的警告不能用另一个命令行选项来消除 - 如果您可以影响编译器调用,那么为什么不直接删除不正确的选项呢?

    此特定警告告诉您在编译 C 代码时不能将标准设置为 C++11。要摆脱它,请在构建配置中找到 -std=c++11 的定义位置,并确保它仅适用于 C++ 编译,而不适用于 C。例如,将其从 CFLAGS 移动到 CXXFLAGS,或 cmake 的等价的。

    【讨论】:

    • 如果我禁用警告“警告如果 '0' 用作空指针常量[-Wzero-as-null-pointer-const],我可以摆脱此评论。不确定它是如何相关的
    • @JonWheelock 这个问题是关于在编译C时使用-std=c++11时产生的警告。根据the documentation-Wno-zero-as-null-pointer-const是一个C++选项,甚至不被gcc编译识别C 文件。
    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多