21

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

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

在此处输入图像描述

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

4

5 回答 5

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

看起来像这样:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11
于 2016-08-25T08:25:02.463 回答
6

您还可以执行以下操作

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

或者,

  1. 属性 --> "C/C++ Build" --> 折叠并选择 "设置"
  2. 在“工具设置”选项卡下,选择您的编译器,然后突出显示“杂项”字段。
  3. 将 -std=c++11 添加到“其他标志”输入字段。
于 2017-04-23T16:20:57.980 回答
1

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

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

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

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

g++ 版本为 7.2.1

于 2017-12-14T00:18:04.047 回答
0

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

于 2018-02-18T00:07:18.747 回答
0

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

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

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

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

我希望这会奏效。

于 2020-10-28T17:31:38.990 回答