在Eclipse IDE中,C++错误'nullptr未在此范围中声明'

Viv*_*han 50 c++ g++ eclipse-cdt

我正在运行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]
Run Code Online (Sandbox Code Playgroud)

实际上直到昨天才建好.我今天无处可去.请帮我解决这个问题.

Rob*_*b I 53

根据C++ 11GCC页面:

要启用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吗?

  • 我尝试添加-std = gnu ++ 0x和-std = c ++ 0x命令行参数但遇到同样的问题.我在Project Properties - > C/C++ Build - > Discovery Options - > Compiler Invocation Arguments下添加了它.那是对的地方吗? (2认同)
  • 终于找到了该怎么做.在Project Properties - > C/C++ Build - > Settings - > GCC C++ Compiler - > Miscellaneous下添加-std = c ++ 0x编译器参数.它现在有效!但是如何为所有C++项目默认添加此标志?任何人?谢谢Vivek Ragunathan (2认同)

Viv*_*han 21

终于找到了该怎么做.在Project Properties - > C/C++ Build - > Settings - > GCC C++ Compiler - > Miscellaneous下添加了-std = c ++ 0x编译器参数.它现在有效!

但是如何为所有C++项目默认添加此标志?任何人?

  • @UserK 如果您的编译器支持 c++11:`set (CMAKE_CXX_STANDARD 11)` (2认同)

The*_*ast 6

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

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