如何在g ++中使用C ++ 11?


21

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

$ g++ main.cpp -o main
$ ./main

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



您是否必须始终包含-std = c ++ 11还是有一个设置,以便每次我编译它时,它都会自动包含使用c ++ 11或
法语Mike

Answers:


53

您可以通过使用-std=c++11标志来做到这一点。这是一个例子:

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

此模式可与所述被选择-std=c++11的命令行标记,或-std=gnu++11以使GNU扩展为好。(

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

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

资料来源:

  1. GCC:选项摘要
  2. GCC:请求或禁止警告的选项

5
谢谢!您介意解释“ -Wall”和“ -Werror”在该命令中的作用是什么?

1
将其添加到我的答案中。
Videonauth

7
@ dhaneku.b:为什么不阅读文档?那就是它的目的。
与莫妮卡(Monica)进行的轻度比赛

9
@LightnessRacesinOrbit因为该文档不一定要解释为什么Videonauth认为添加它们很重要,尽管事实上它们不在原始示例命令行中,也不一定要解释什么样的重要交互“ -Wall”和“ -Werror”可能与“ -std = c ++ 11”一起使用。(是的,对后者的回答是“没什么特别的”,但是文档中不会这么说,并且文档中没有提到很多奇怪的极端情况。 t缺席证明”,以及其他所有内容。)
RM

2
可以使用-std=c++11命令行标志选择此模式,或者也-std=gnu++11可以启用GNU扩展。(source
Videonauth 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.