【问题标题】:How to hide g++ c++11 compile warnings in ubuntu 12.10如何在 ubuntu 12.10 中隐藏 g++ c++11 编译警告
【发布时间】:2012-11-20 09:17:17
【问题描述】:

当我执行时

g++ main.cpp 

我得到输出

main.cpp:9:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:10:15: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:11:16: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:12:14: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
main.cpp:13:13: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]

现在如果我运行

g++ -std=c++11 main.cpp

警告消失了,但我不想明确指定已启用的内容。我犹豫要不要创建一个简单的 bash 别名,因为如果我没记错的话,gcc 已经是某种别名了。无论如何这样做是否安全,或者是否有正确的方法可以在配置文件或其他内容中解决此问题?我正在使用默认存储库的 Ubuntu 12.10 x64 上运行。

【问题讨论】:

  • 你可以只写符合 C++03 的代码...
  • 您的问题是什么?如何编写在非 C++11 编译器中编译的 C++11?什么?

标签: c++ ubuntu c++11 g++ warnings


【解决方案1】:

“我不想明确指定已经启用的东西”——实际上这几乎可以肯定是最低能量消耗的方法。还有许多其他可能性,从通过grep -v 管道输出到重新编码和重新编译编译器工具链,但它们很可能都比仅将标志添加到命令行更难。

而且,如果您担心额外的字符和可能的别名冲突,您可以随时调用您的别名 g11 或类似名称。那么你只需要记住使用正确的名称,但任何有脊柱的生物体都应该足够先进来处理它:-)

【讨论】:

  • 你是说无脊椎动物不能记住命令行参数吗?这太荒谬了:)
【解决方案2】:

GCC 系列编译器(gcc、g++ 等)接受 -w 开关以禁用所有警告 - 但您不想这样做。

【讨论】:

    【解决方案3】:

    使用别名确实是一种安全的方法。出于同样的原因,我将以下内容添加到了我的 .bashrc 文件中,并且它运行良好。

    alias g++='g++ -std=c++11'
    

    【讨论】:

      【解决方案4】:

      如果您编写代码,那么您可能会编写代码(为什么不,我们都期待 C++11),那么您现在需要添加标志。您可以在 make 文件中执行此操作,也可以在两行 /usr/local/bin/g++ 中执行此类操作:

      #!/bin/bash
      /usr/bin/g++ -std=c++11 "$@"
      

      通过在路径中较早,将“赢得”默认的 g++ 二进制文件并为您调用它。

      方便,但您的代码现在可能不可移植。权衡。

      【讨论】:

        【解决方案5】:

        在您选择的构建系统或 IDE 中指定 -std=c+11。您可以了解各种构建系统here

        【讨论】:

          【解决方案6】:

          这是 GCC 特有的,你必须明确地告诉它。如果您使用的是某些 IDE,只需转到项目选项并在那里指定 -std=c++11 即可。否则最好编写符合 C++03 的代码。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-01-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-05-08
            • 1970-01-01
            相关资源
            最近更新 更多