最近我遇到了我编写的c ++代码中的编译错误,所以我被问到是否使用的是C ++ 11编译器,但说实话,我不知道如何查看我的编译器版本!所以任何想法如何解决这个问题?
顺便说一句,我使用代码块作为IDE,其中包括GG编译器和MinGW的GDB调试器。如果我在Linux下编译我的c ++代码,我应该运行什么命令才能知道我的编译器版本?
答案 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]