Eclipse CDT Indexer无法完全识别c ++ 11

时间:2015-09-18 01:15:24

标签: c++ eclipse c++11 eclipse-cdt

首先,我知道-std = c ++ 11标志以启用c ++ 11支持以及放置它的位置。我已将-std=c++11附加到Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags,并且编译工作正常。但是索引器并不相处,例如,如果我想使用emplace的{​​{1}}函数(c ++ 11),它将找不到emplace函数。

std::map

我还查看了这些相关问题:

更新:现在我玩过它甚至不识别std :: map类型,虽然编译精细和eclipse找到所有标题...

  • 编译器Mingw64 GCC 5.2.0
  • Eclipse Mars 4.5
  • CDT 8.7

2 个答案:

答案 0 :(得分:6)

Eclipse Mars与以前的版本有点不同。

第一步得到指出错误的索引器错误 - 在上面链接的Enable C++11 in Eclipse CDT (Juno/Kepler/Luna) indexer中有所涉及。如果你已经完成了所有这些,如果我知道你遇到了什么,我会变成黑暗的。到目前为止火星有点不稳定。

  1. 转到项目 - >属性 - > C / C ++常规 - >预处理器包含路径。
  2. 单击“提供者”选项卡。
  3. 单击CDT GCC内置编译器设置MinGW
  4. 点击右侧的“上移”按钮。
  5. 在语言设置提供程序选项下
    1. 点击使用项目之间共享的全球提供商
    2. 将-std = c ++ 1y添加到Command命令行的末尾以获取编译器规范。
  6. 顺便说一下,如果有人知道全局设置在哪里,我可以默认这种行为,请告诉我。

    第2步让编译器正常工作

    1. 转到Project-> properties-> C / C ++ Build-> Settings。
    2. 转到工具设置标签。
    3. 展开GCC C ++编译器
    4. 点击方言 从“语言标准”下拉列表中选择您要定位的C ++标准。

答案 1 :(得分:-1)

Eclipse CDT通过索引器运行它来理解窗口中的C ++代码。这个索引器只不过是使用某些编译选项调用GCC C ++编译器。有时,您可能希望更改此索引器使用的编译器选项。

例如,我最近发现C ++ 11容器和类(如未来)没有被索引器解析,并用红色波浪线加下划线。这是因为索引器使用的编译器选项没有-std = c ++ 11。

更改索引器的编译器选项:

  1. 打开首选项并转到C / C ++ - >构建 - >设置。
  2. 单击“发现”选项卡,然后选择“CDT GCC内置编译器设置”。
  3. 根据需要修改下面显示的命令字符串。例如,这里我添加了-std = c ++ 11。
  4. Eclipse CDT将自动重新索引您的C ++ 保存之后的文件。但是,我发现这并没有删除 未解决的项目。
  5. 我通过右键单击来手动重新编制索引 项目和选择索引 - >重建。这很有效!