57

我正在运行 Eclipse Helios,并且安装了 g++-4.6。希望 g++4.6 实现 C++ 11 特性我没有错。我创建了一个使用 nullptr 和 auto 关键字的 C++ 项目。构建给出以下错误: -

../{filename}.cpp:13:13: error: ‘nullptr’ was not declared in this scope

../{filename}.cpp:14:2: warning: ‘auto’ will change meaning in C++0x; please remove it [-Wc++0x-compat]

实际上,直到昨天它还在建设中。我今天不知从何而来。请帮我解决这个问题。

4

7 回答 7

60

根据C++11 的 GCC 页面

要启用 C++0x 支持,请将命令行参数 -std=c++0x 添加到 g++ 命令行。或者,要启用除 C++0x 扩展之外的 GNU 扩展,请将 -std=gnu++0x 添加到您的 g++ 命令行。GCC 4.7 及更高版本也支持 -std=c++11 和 -std=gnu++11。

你编译了-std=gnu++0x吗?

于 2012-04-05T17:49:47.367 回答
21

终于知道该怎么做了。在 Project Properties -> C/C++ Build -> Settings -> GCC C++ Compiler -> Miscellaneous 下添加了 -std=c++0x 编译器参数。现在可以了!

但是如何为所有 C++ 项目默认添加这个标志呢?有人吗?

于 2012-04-06T11:12:39.433 回答
6

您使用的是 g++ 4.6 版本,您必须调用标志 -std=c++0x 进行编译

g++ -std=c++0x *.cpp -o 输出

于 2015-08-11T11:37:12.560 回答
4

这是实际的编译器错误还是代码分析错误?有时代码分析可能有点粗略并报告无效错误。

要关闭项目的代码分析,请在项目资源管理器中右键单击您的项目,单击属性,然后转到 C/C++ 常规选项卡,然后是代码分析。然后单击“使用项目设置”并禁用您不希望使用的设置。

另外,您确定要使用 C++11 编译器进行编译吗?

于 2012-04-05T17:48:47.503 回答
3

转到设置 - >编译器...并添加标志“让 g++ 遵循即将到来的 C++0x ISO C++ 语言标准 [std=c++0x]

于 2015-12-13T00:48:48.817 回答
0

我在“-c -fmessage-length=0”之后添加了“,-std=c++0x”,在项目属性 -> C/C++ 构建 -> 设置 -> GCC C++ 编译器 -> 杂项下。不要忘记添加逗号“,”作为分隔符。

于 2016-07-09T06:40:37.063 回答
0

尝试使用不同版本的 gcc 对我有用——在我的情况下是 gcc 4.9。

于 2018-03-09T11:18:54.933 回答