最近我在编写的 C++ 代码中遇到了编译错误,所以有人问我是否使用 C++11 编译器,但老实说我不知道如何检查我的编译器版本!那么知道如何解决这个问题吗??
顺便说一句,我使用代码块作为 IDE,其中包括 MinGW 的 GCC 编译器和 GDB 调试器。另外,如果我在 Linux 下编译 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++ follow thecoming C++0x ISO C++ language standard [-std =c++0x]