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

what c++ norme i'm currently using?

本文关键字:C++ 规范 是什么 目前      更新时间:2023-10-16

最近我在编写的c++代码中遇到编译错误,所以有人问我是否使用c++11编译器,但老实说,我不知道如何检查我的编译器版本!你知道怎么弄清楚吗??

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

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

大多数编译器都有输出版本的选项;许多人会输出它系统地处于详细模式。对于g++,请尝试g++ --version。最近的g++版本确实支持C++11,但您必须激活它与CCD_ 2(而不是通常的CCD_-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还没有实现c++11的100%,它实现的程度取决于版本。请参阅此处以获取支持的功能表。

EDIT:严格来说,如果您使用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,它运行良好。

edit:是的,正如@jaunchopanza所说,您需要-std=c++0x编译器标志才能使其工作。如果您使用代码::块,只需右键单击您的项目,选择构建选项,并检查上面写着让g++遵循即将到来的C++0x ISO C++语言标准[-std=C++0x]

的项目