95

我正在尝试使用g++or-std=c++11标志c++0x进行编译。

但是,我收到此错误

cc1plus: error: unrecognized command line option "-std=c++11"

g++ --版本

g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4

4 回答 4

107

从您的 G++ 版本来看,您需要对其进行严重更新。C++11 仅在 G++ 4.3 之后才可用。最新版本是 4.7。

在 G++ 4.7 之前的版本中,您必须使用-std=c++0x,对于更新的版本,您可以使用-std=c++11.

于 2013-02-03T16:33:22.763 回答
14

引用gcc 网站

C++11 功能在 GCC 的 Subversion 存储库的主干以及 GCC 4.3 及更高版本中作为“主线”GCC 编译器的一部分提供。要启用 C++0x 支持,请将命令行参数 -std=c++0x 添加到 g++ 命令行。或者,要启用除 C++0x 扩展之外的 GNU 扩展,请将 -std=gnu++0x 添加到您的 g++ 命令行。GCC 4.7 及更高版本也支持 -std=c++11 和 -std=gnu++11。

所以可能你使用的 g++ 版本不支持-std=c++11. 试试-std=c++0x吧。

C++11 功能的可用性仅适用于 >= 4.3 的版本。

于 2013-02-03T16:30:48.777 回答
3

你应该试试这个

g++-4.4 -std=c++0x or g++-4.7 -std=c++0x
于 2014-02-20T16:46:27.490 回答
-4

我也遇到了同样的错误,用 -D 标志编译修复了它,试试这个:

g++ -Dstd=c++11

于 2015-05-05T06:52:58.770 回答