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

How do you enable C++11 syntax in Eclipse Neon?

我正在 Eclipse Neon 中开发 C+11 代码,今天注意到 C+11 中引入的基于范围的 for 循环被 IDE 突出显示为红色,表明它无法识别它。

我找到了多个关于如何为旧版本的 CDT 执行此操作的链接,例如这个 (Eclipse CDT C++11/C++0x support) 你可以看到虽然没有 "Tool Settings" 选项卡。

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

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

看起来像这样:

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

您还可以执行以下操作

  1. 转到项目属性(alt enter)
  2. 在左窗格中,滚动到 "C/C++ Build",将其折叠,select 设置。
  3. 在右窗格中,select 并在工具下折叠您的编译器 设置菜单,select"Dialect",从中选择您的语言标准 下拉,或在 "other dialect flags" 文本中输入 -std=c++11 输入。

或者,

  1. 属性 --> "C/C++ Build" --> 折叠和 select "Settings"
  2. 在“工具设置”选项卡下,select 您的编译器,并突出显示 "Miscellaneous" 字段。
  3. 将 -std=c++11 添加到 "Other flags" 输入字段。

由于我不明白的原因,在搜索有关为什么我的 Fedora 27 上的 Eclispe Oxygen + CDT 9.3.2 运行 无法可靠地调试我的代码的线索时,Google 提出这个问题/答案作为要看的东西。

基本上我的问题是一个相当简单的 C++ 程序,使用 C++ 11 特性(特别是 shared_ptr),在 Eclipse Oxygen 2 + CDT 9.3.2 中不可调试Fedora 27(从标准包 repo 安装了 gdb 版本 8.0.1)。进入几个方法调用导致挂起的调试会话,没有任何反应,终止 Eclipse 以恢复。

如果我在命令行上使用 gdb 调试二进制文件,一切都很好;我可以设置断点等,一切正常。但是从 Eclipse 内部看,什么也没做。

但是,如 Andreas 所示,将 -std=c++11 放入项目设置中解决了问题。我不知道为什么。我想我会把它放上去以防其他人 运行 遇到类似的问题。

g++ 版本为 7.2.1

出于某种原因,编辑全局 C++ 编译器设置对我不起作用。按照说明修改 project-specific 设置确实有效。参见:Eclipse CDT C++11/C++0x support

如果以上都不适合您: 只需检查是否

Properties > C/C++ Build > Settings > Tool Settings tab > Dialect

确认语言标准 drop-down 菜单中是否有 “ISO C++11 ...” 选项。

如果是,那么 select > 申请并关闭。

我希望这会奏效。