我目前使用的是什么c + +规范?

最近我遇到了编译错误,我写了一个C ++代码,所以我被问到是否使用C ++ 11编译器,但老实说,我不知道如何检查我的编译器版本! 所以任何想法如何弄清楚这一点?

顺便说一句我使用的代码块作为一个IDE,其中包括来自MinGW的GCC编译器和GDBdebugging器。 如果我在Linux下编译我的c ++代码,我应该运行什么命令来了解我的编译器版本?

Solutions Collecting From Web of "我目前使用的是什么c + +规范?"

这可能是一个棘手的问题。 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,但我想证明是错误的。)

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

 g++ --version 

这不会告诉你,如果你使用的是C ++ 11。 要使用c ++ 11特性,你必须用thr -std=c++0x标志来调用编译器:

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

请记住,gcc还没有实现100%的c + + 11,它的实现取决于版本。 在这里查看支持的功能表。

编辑 :严格来说,如果你正在使用GCC,你不能使用完全兼容的C ++ 11编译器由于缺少的功能。 但版本4.6.1以上涵盖了很多标准。

如果你在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 … ,然后选中Have g ++遵循即将到来的C ++ 0x ISO C ++语言标准[-std = c + + 0X]