如何在Eclipse Juno/Kepler/Luna CDT中启用C++ 11?

use*_*301 85 eclipse eclipse-cdt eclipse-juno eclipse-kepler eclipse-luna

编辑:事实证明这并非特定于Eclipse Kepler.我不得不对Eclipse Juno使用相同的过程.问题是,其他帖子似乎缺少回答同一问题的步骤.

我正在使用Eclipse Kepler for C++,我正在尝试使用C++ 11并获得错误.当我编译时,我得到了错误

错误:C++ 98模式下不允许使用基于范围的for循环

我按照帖子的说明进行了操作

Eclipse CDT C++ 11/C++ 0x支持

并且为Eclipse Juno提供的解决方案无效.

不同的评论表明重启日食,清洁和重建.这并没有什么不同.

MrE*_*Sir 183

您需要做两件事,首先需要设置编译器,然后需要设置CDT的语言处理器.既然你没有提到你正在使用哪个编译器,我会假设它是GCC,但其他编译器的步骤类似.(当然,请注意,您需要一个支持C++ 11的编译器.)

设置编译器非常简单:

  1. 右键单击项目,然后单击"属性"
  2. 在C/C++ Build下单击"设置"
  3. 在GCC C++编译器下,单击"其他"
  4. 在Other Flags框中,将"-std = c ++ 11"附加到标记列表中.
  5. 单击"应用"和"确定

此时,您应该能够重建项目并使其运行.但是CDT仍然可能显示C++ 11包含的错误.以下是解决这个问题的方法:

  1. 右键单击项目,然后单击"属性"
  2. 在C/C++ General下单击"预处理器包含路径,宏"
  3. 选择"提供者"选项卡
  4. 列表中应该有一个项目,例如"GCC Built in Compiler Settings".选择此条目.
  5. 取消选中"使用全局提供商..."选项
  6. 在列表下面有一个框,上面写着"获取编译器规范的命令".在此附加"-std = c ++ 0x".
  7. 使用右侧的"上移"按钮将"GCC内置编译器设置"提供程序移动到列表顶部.
  8. 单击Apply,然后单击OK.
  9. 回到Eclipse工作区,选择Project Menu,C/C++ Index,然后单击"Re-resolved unresolved includes".

  • @MrEricSir是否有办法为工作区进行此设置,以便在添加新项目时它也自动应用于它? (4认同)
  • 编辑:我没有找到它应该的第一部分,但我正在通过make编译,所以它可能是一个解释.(我发现它在工作区配置中并设置它).但是我把它放在`编译器规范'中,但仍然不起作用.std :: shared_ptr同样没有被识别.虽然它曾经用juno在旧机上工作. (2认同)

MeJ*_*MeJ 25

Eclipse Kepler Service Release 1中的C++ 11支持(Build id:20130919-0819)

在最新版本的Eclipse Kepler SR1中,您只需要添加-std = c ++ 11

  1. 右键单击您的项目,然后单击" 属性"
  2. 导航到C/C++常规预处理器包括路径,宏等.
  3. 选择" 提供者"选项卡
  4. -std = c ++ 11添加到Command以获取编译器规范:
  5. 应用更改后,应自动生成索引.

"命令来获得编译器specs:"直插式应该是这样的:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
Run Code Online (Sandbox Code Playgroud)

  • 使用GCC,我不得不添加-std = c ++ 0x (2认同)

Tob*_*obu 13

从CDT 8.3(作为Kepler更新提供)开始,构建设置中有一个新的方言选项:

http://wiki.eclipse.org/CDT/User/NewIn83#Build


Kar*_*rrq 6

我使用Eclipse Kepler并修复它我做了这个:

1 - 右键单击​​项目>> Proprietes >> C/C++ Build :: Settings

2 - 去GCC G ++编译器>>其他>>其他标志

 i then added -std=c++11 
 hit apply and ok
Run Code Online (Sandbox Code Playgroud)

这解决了我的问题!

我希望它有所帮助!