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

Mat*_*tze 4 c++ eclipse eclipse-cdt c++11

首先,我知道-std = c ++ 11标志以启用c ++ 11支持以及放置它的位置.我已经追加-std=c++11Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> GCC C++ Compiler -> Miscellaneous -> Other Flags和编译只是正常工作.但是,如果我想使用的索引不相处,例如emplace功能std::map(C++ 11),也不会找到布设功能.

#include <map>

int main() {
    std::map<int, int> data;
    data.emplace(5,5);
Run Code Online (Sandbox Code Playgroud)

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

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

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

use*_*301 6

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

第一步得到索引器错误突出显示工作 - 在上面链接的Eclipse CDT(Juno/Kepler/Luna)索引器启用C++ 11.如果你已经完成了所有这些,如果我知道你遇到了什么,我会变成黑暗的.到目前为止火星有点不稳定.

  1. 转到项目 - >属性 - > C/C++常规 - >预处理器包含路径.
  2. 单击"提供者"选项卡.
  3. 单击CDT GCC内置编译器设置MinGW
  4. 单击右侧的"上移"按钮.
  5. 在语言设置提供程序选项下
    1. 单击"使用项目之间共享的全局提供程序
    2. 将-std = c ++ 1y添加到Command命令行的末尾以获取编译器规范.

顺便说一句,如果有人知道全局设置在哪里,所以我可以默认这种行为,请告诉我.

第2步让编译器工作

  1. 转到项目 - >属性 - > C/C++构建 - >设置.
  2. 转到"工具设置"选项卡.
  3. 展开GCC C++编译器
  4. 单击"方言"从"语言标准"下拉列表中选择要定位的C++标准.

  • 除了你的步骤1对我的情况没有帮助,你可以在"窗口 - >首选项 - > C/C++ - >构建 - >设置 - >发现"这样做...这个问题真的很讨厌,我ll可以尝试另一个CDT版本...... (2认同)