如何将 C++11 与 g++ 一起使用?

24 command-line compiling

我目前正在 gedit 中输入我的所有代码并使用终端来编译我的程序。为此,我正在输入:

$ g++ main.cpp -o main
$ ./main
Run Code Online (Sandbox Code Playgroud)

这是有效的。但是,它没有使用 C++11。如何检查我的 C++ 版本并使用 C++11 通过终端进行编译?

Vid*_*uth 55

这可以通过使用-std=c++11标志来完成。下面是一个例子:

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main
Run Code Online (Sandbox Code Playgroud)

可以使用-std=c++11命令行标志选择此模式,也可以-std=gnu++11启用 GNU 扩展。(来源

请参阅下面对其他标志的解释。我深信,从长远来看,至少使用这些错误标志会让你的生活更轻松。一旦您对脚本的功能有了更好的了解,您就可以在需要时省略警告以实现结果,但它不应该成为标准。希望这对你有帮助。这是开始阅读的好地方

  • -Wall — 启用所有主要警告。
  • -Wextra — 启用其他重要警告。
  • -Werror— 将所有警告都变成错误,如果报告任何警告,将导致编译失败

资料来源:

  1. GCC:选项摘要
  2. GCC:请求或抑制警告的选项

  • @LightnessRacesinOrbit 因为文档不一定会解释为什么 Videonauth 认为添加它们很重要,尽管它们不在原始示例命令行中,也不一定解释什么样的重要交互“-Wall”和“ -Werror” 可能与“-std=c++11”有关。(是的,对后者的回答是“没什么特别的”,但文档不会这么说,而且文档中没有提到一堆奇怪的极端情况。“缺乏证据是” t 缺席证明”,以及所有这些。) (9认同)
  • @dhaneku.b:为什么不阅读文档?这就是它的用途。 (7认同)
  • 谢谢!你介意解释一下“-Wall”和“-Werror”在该命令中的作用吗? (6认同)
  • 可以使用 `-std=c++11` 命令行标志或 `-std=gnu++11` 来选择此模式以启用 GNU 扩展。([source](https://gcc.gnu .org/projects/cxx-status.html#cxx11)) (2认同)