编辑:事实证明这并不仅适用于Eclipse Kepler。我必须使用相同的过程来处理Eclipse Juno。问题在于其他回答此问题的帖子中似乎缺少一些步骤。
我正在使用C ++的Eclipse Kepler,尝试使用C ++ 11并出现错误。编译时出现错误
错误:在C ++ 98模式下不允许使用基于范围的for循环
我已经按照这篇文章中的说明进行了操作
但是给出的解决方案对Eclipse Juno无效。
不同的评论建议重新启动eclipse并清理和重建。但这也没有产生任何差异。
编辑:事实证明这并不仅适用于Eclipse Kepler。我必须使用相同的过程来处理Eclipse Juno。问题在于其他回答此问题的帖子中似乎缺少一些步骤。
我正在使用C ++的Eclipse Kepler,尝试使用C ++ 11并出现错误。编译时出现错误
错误:在C ++ 98模式下不允许使用基于范围的for循环
我已经按照这篇文章中的说明进行了操作
但是给出的解决方案对Eclipse Juno无效。
不同的评论建议重新启动eclipse并清理和重建。但这也没有产生任何差异。
你需要做两件事情,首先你需要设置你的编译器,然后你需要设置CDT的语言处理器。由于你没有提到你使用哪个编译器,我会假设它是GCC,但其他编译器的步骤也类似。(当然,你需要一个支持C++11的编译器。)
设置编译器非常简单:
此时,你应该能够重建你的项目并使其运行。但CDT仍可能显示C++11 include的错误。以下是如何解决这个问题:
Eclipse Kepler Service Release 1 (Build id: 20130919-0819) 支持 C++11。
在最新版本的 Eclipse Kepler SR1 中,您只需要添加 -std=c++11。
"获取编译器规范的命令:" 行应该是这样的:
${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
我使用的是Eclipse Kepler,为了解决这个问题,我做了以下操作:
1 - 右键单击项目 >> 属性 >> C/C++ Build :: 设置
2 - 转到GCC G++编译器 >> 杂项 >> 其他标志
然后我添加了-std=c++11
,点击应用和确定
这样就解决了我的问题!
希望对你有所帮助!
我这里运行的是eclipse indigo和cdt 8.0.2。我按照所有指南进行了操作,但仍然需要手动设置预处理器定义才能找到像std::unique_ptr这样的东西。 包含文件“memory”会检查这一点。 在项目属性中的“C++ General”下的“Paths and Symbols”中的“Symbols”选项卡上将__cplusplus设置为201103L。
在Eclipse Kepler中,将方言标志“-std=c++11”添加到项目属性-> C / C ++ Build -> Settings -> Tool settings(GCC C ++编译器 -> Dialect)中解决了我的问题,除了上述设置。