如何在ubuntu 12.10中隐藏g ++ c ++ 11编译警告

时间:2012-12-02 21:48:24

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

执行时

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。

5 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

做一个别名确实是一种安全的方法。为了这个原因,我将以下内容添加到我的.bashrc文件中,并且它运行良好。

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