我正在使用的c ++ norme是什么?

时间:2012-04-05 09:35:16

标签: c++ linux compiler-construction c++11

最近我遇到了我编写的c ++代码中的编译错误,所以我被问到是否使用的是C ++ 11编译器,但说实话,我不知道如何查看我的编译器版本!所以任何想法如何解决这个问题?

顺便说一句,我使用代码块作为IDE,其中包括GG编译器和MinGW的GDB调试器。如果我在Linux下编译我的c ++代码,我应该运行什么命令才能知道我的编译器版本?

3 个答案:

答案 0 :(得分:16)

这可能是一个棘手的问题。 C ++ 11指的是一个版本 标准,而不是编译器的版本。不同的编译器,和 任何给定编译器的不同版本通常都会实现混合 该标准的版本,至少对于最新版本。更多或 更少,因为C ++ 11的任何实现都是相当新的,因此 可能还是马车。

大多数编译器都有输出版本的选项;很多人会输出它 系统地处于详细模式。对于g ++,请尝试g++ --version。最近 g ++版本确实支持C ++ 11,但你必须激活 它与-std=c++0x(而不是通常的-std=c++03-std=c++98)。正如名称(c++0x而不是c++11)所示 是不是真正的C ++ 11;它是一些(大多数?)的实现 主要新功能,基于各种工作的初步版本 论文,而不是最终标准。

(FWIW:我不认为任何编译器完全实现了所有C ++ 11,但我会 爱被证明是错误的。)

答案 1 :(得分:12)

你可以找到你的编译器版本:

g++ --version

如果您使用的是c ++ 11,则不会告诉您。要使用c ++ 11功能,您必须使用thr -std=c++0x标志调用编译器:

g++ -std=c++0x ....

请记住,gcc尚未实现100%的c ++ 11,它实现的程度取决于版本。有关支持的功能表,请参阅here

编辑:严格来说,如果您使用GCC,由于缺少功能,您无法使用完全兼容的c ++ 11编译器。但版本4.6.1以后涵盖了很多标准。

答案 2 :(得分:5)

如果你在linux中,检查版本很容易。

> gcc --version

会告诉你你的版本。请注意,GCC C ++ 11支持仍然不完整,您可以在此处找到详细信息:http://gcc.gnu.org/projects/cxx0x.html

我自己使用了一些C ++ 11功能,即初始化列表和nullptr常量。我正在使用GCC 4.6,它运行正常。

编辑:是的,正如@jaunchopanza所说,你需要-std=c++0x编译器标志才能使它工作。如果你正在使用Code :: Blocks,只需右键单击你的项目,选择 Build options ... ,然后检查有g ++跟随即将到来的C ++ 0x的项目ISO C ++语言标准[-std = c ++ 0x]