Joy*_*Joy 16 c++ linux compiler-construction c++11
最近我遇到了我编写的c ++代码中的编译错误,所以我被问到是否使用的是C++ 11编译器,但老实说我不知道如何检查我的编译器版本!所以任何想法如何解决这个问题?
顺便说一句,我正在使用代码块作为IDE,其中包括GG编译器和MinGW的GDB调试器.如果我在Linux下编译我的c ++代码,我应该运行什么命令来了解我的编译器版本?
Jam*_*nze 18
这可能是一个棘手的问题.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,但我很乐意被证明是错误的.)
jua*_*nza 13
你可以找到你的编译器版本:
g++ --version
Run Code Online (Sandbox Code Playgroud)
如果您使用的是c ++ 11,则不会告诉您.要使用c ++ 11功能,您必须使用thr -std=c++0x标志调用编译器:
g++ -std=c++0x ....
Run Code Online (Sandbox Code Playgroud)
请记住,gcc尚未实现100%的c ++ 11,它实现的程度取决于版本.请参阅此处以获取支持的功能表.
编辑:严格来说,如果您使用GCC,由于缺少功能,您无法使用完全兼容的c ++ 11编译器.但版本4.6.1以后涵盖了很多标准.
小智 5
如果你在linux中,检查版本很容易.
> gcc --version
Run Code Online (Sandbox Code Playgroud)
会告诉你你的版本.请注意,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]