如何在 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
未找到Android Studio NDK iostream文件,无法在CMakeList中启用neon