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

Posted

技术标签:

【中文标题】如何在 Eclipse Neon 中启用 C++11 语法?【英文标题】:How do you enable C++11 syntax in Eclipse Neon? 【发布时间】:2016-08-25 00:18:42 【问题描述】:

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

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

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

【问题讨论】:

仅供参考,在某些计算机(至少是我的)上,Eclipse Neon 解析器默认使用 C++14。这可能是因为 g++ 5.4.0 及更高版本默认编译时使用 C++14 支持(就像您通常会添加命令一样,我不必这样做),因此 Eclipse 解析器无需添加 -std 即可工作=c++14 到提供者选项卡。结论:升级编译器可以修复解析器问题。 【参考方案1】:
    右键单击您的项目,然后单击“属性” 导航到 C/C++ 常规和预处理器,包括路径、宏等。 选择 Providers 选项卡,单击您使用的编译器的编译器设置行。 将 -std=c++11 添加到 Command 以获取编译器规范。 应用更改。

看起来像这样:

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

【讨论】:

FWIW 我还必须重建索引(右键单击您的项目->索引->重建)。 我还必须为“All”构建配置执行上述步骤。 这对我不起作用 :( 相反,我去了 1. Properties 2. C/C++ Build 3. Settings 4. Dialect 5. put -std=c++11 in Other dialect flags方框 6. 应用和构建 @Pavel re“必须为每个项目 [更改启用 c++11]”:您可以为所有 eclipse c++ 项目全局更改此设置。而不是只修改您的项目的配置(通过:“右键单击您的项目”)...而是编辑所有项目的全局配置(通过:打开 Eclipse 菜单 --> 窗口 --> 首选项 --> C /C++ --> Build --> Settings --> Discovery --> "CDT GCC Build-in Compiler Settings" --> 然后附加-std=c++11 or -std=gnu++11 or -std=gnu++0x)。 重建索引很重要!我花了半个小时试图弄清楚为什么这个解决方案对我不起作用。非常感谢@SyntheticGio【参考方案2】:

您还可以执行以下操作

    转到项目属性(alt enter) 在左侧窗格中,滚动到“C/C++ Build”,折叠它,选择设置。 在右侧窗格中,选择并折叠工具下的编译器 设置菜单,选择“方言”,选择您的语言标准 下拉菜单,或在“其他方言标志”文本中输入 -std=c++11 输入。

或者,

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

【讨论】:

这些说明对于 Eclipse Neon CDT 似乎并不准确。【参考方案3】:

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

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

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

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

g++ 版本为 7.2.1

【讨论】:

我猜这个解决方案也适用于 Eclipse-Oxygen(除了 Eclipse-Neon)。【参考方案4】:

由于某种原因,编辑全局 c++ 编译器设置对我不起作用。按照说明修改项目特定设置确实有效。见:Eclipse CDT C++11/C++0x support

【讨论】:

【参考方案5】:

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

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

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

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

我希望这会奏效。

【讨论】:

以上是关于如何在 Eclipse Neon 中启用 C++11 语法?的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse neon C 程序没有构建 g++ 并且在路径错误中找不到 gcc

Eclipse Neon 配置C/C++开发环境

Eclipse Neon:如何更改所选线条的颜色?

未找到Android Studio NDK iostream文件,无法在CMakeList中启用neon

在Eclipse-jee-neon中配置springsource-tool-suite

eclipse neon 发布