如何在Eclipse Neon中启用C++11语法?

23

我在使用Eclipse Neon开发C++11代码时发现,IDE将C++11引入的基于范围的for循环标记为红色,表明它无法识别。

我找到了多个关于如何针对旧版本的CDT进行此操作的链接,例如这个(Eclipse CDT C++11/C++0x support)。但是您可以看到没有“工具设置”选项卡。

enter image description here

有人能建议我如何配置我的项目,以便正确突出显示C++11语法吗?(我正在使用单独的构建系统)


2
FYI,在某些计算机上(至少在我的计算机上),Eclipse Neon解析器默认支持C++14。这可能是因为g++ 5.4.0及更高版本默认使用C++14支持进行编译(就像您通常添加命令一样,我不必添加-std=c++14),因此Eclipse解析器可以在无需添加-std=c++14到提供程序选项卡的情况下工作。结论:升级编译器可以解决解析器问题。 - Xeverous
5个回答

44
  1. 右键单击您的项目,然后单击属性
  2. 导航到C / C ++一般和预处理器包含路径,宏等
  3. 选择提供程序选项卡,单击您使用的编译器的编译器设置行。
  4. 将-std = c ++ 11添加到命令以获取编译器规范。
  5. 应用更改。

看起来会像这样:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11

9
顺便说一句,我也不得不重建索引(右键单击项目->索引->重建)。 - syntheticgio
我还必须为“全部”构建配置执行上述步骤。 - V. Panchenko
4
这对我不起作用 :( 相反,我去了
  1. 属性
  2. C/C++ 构建
  3. 设置
  4. 方言
  5. 在“其他方言标志”框中添加 -std=c++11
  6. 应用并构建
- Geronimo
执行这些步骤后,进入项目-> C/C++索引->刷新所有文件。 - ShahzadIftikhar
2
@Pavel 关于“每个项目都需要更改启用c++11”的问题:您可以全局更改此设置以适用于所有Eclipse C++项目。不要仅修改您的项目配置(通过:“右键单击您的项目”)...而是编辑所有项目的全局配置(通过:打开Eclipse菜单-->窗口-->首选项-->C/C++-->构建-->设置-->发现-->“CDT GCC内置编译器设置”-->然后附加-std=c++11-std=gnu++11-std=gnu++0x)。 - Trevor Boyd Smith
2
重建索引非常重要!我花了半个小时试图弄清楚为什么这个解决方案对我不起作用。非常感谢@SyntheticGio。 - cesargastonec

7
您也可以按照以下步骤进行操作:
  1. 进入项目属性(快捷键alt + enter)
  2. 在左侧面板中,将“C/C++ Build”折叠起来,选择“设置”。
  3. 在右侧窗格中,选择并折叠您的编译器,然后在“工具设置”菜单下选择“方言”,从下拉菜单中选择您的语言标准,或在“其他方言标志”文本输入框中输入-std=c++11。

或者,您也可以按照以下步骤进行操作:

  1. 点击“属性”-->“C/C++ Build”-->折叠并选择“设置”
  2. 在“工具设置”选项卡下,选择您的编译器,并突出显示“杂项”字段。
  3. 将-std=c++11添加到“其他标志”输入字段中。

5
这些指令似乎不适用于Eclipse Neon CDT。 - Constantin

1
由于某些原因,当我在Fedora 27上运行Eclipse Oxygen + CDT 9.3.2调试我的代码时,无法可靠地进行调试。谷歌推荐了这个问题/答案作为参考。我的问题基本上是:一个相当简单的C++程序,使用C++11特性(具体来说是shared_ptr),在Fedora 27上的Eclipse Oxygen 2 + CDT 9.3.2中无法进行调试(标准软件包仓库中安装了gdb版本8.0.1)。进入一些方法调用会导致挂起的调试会话,没有任何反应,只能终止Eclipse才能恢复。如果我在命令行上使用gdb调试二进制文件,一切都很好,我可以设置断点等,一切正常。但是从Eclipse内部,却毫无反应。然而,像Andreas所示地将-std=c++11放入项目设置中解决了这个问题。我非常不明白为什么会这样。我想把这个问题放上来,以防其他人遇到类似的问题。g++的版本是7.2.1。

我猜这个解决方案也适用于Eclipse-Oxygen(除了Eclipse-Neon)。 - Trevor Boyd Smith

0

由于某些原因,编辑全局C++编译器设置对我没有起作用。遵循修改项目特定设置的说明确实有效。请参见:Eclipse CDT C++11/C++0x support


0
如果上述方法对您无效: 只需检查是否。
Properties > C/C++ Build > Settings > Tool Settings tab > Dialect

请确认语言标准下拉菜单中是否有"ISO C++11 ..."选项。

如果是,请选择>应用并关闭。

我希望这能起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接