首页 文章

Eclipse CDT Indexer无法完全识别c 11

提问于
浏览
4

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

#include <map>

int main() {
    std::map<int, int> data;
    data.emplace(5,5);

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

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

  • 编译器Mingw64 GCC 5.2.0

  • Eclipse Mars 4.5

  • CDT 8.7

2 回答

  • 6

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

    第一步得到索引器错误突出显示工作 - 在上面链接的Enable C++11 in Eclipse CDT (Juno/Kepler/Luna) indexer中 . 如果我知道你遇到了什么,那么你是否会被混淆 . 到目前为止火星有点不稳定 .

    • 转到项目 - >属性 - > C / C常规 - >预处理器包含路径 .

    • 单击“提供者”选项卡 .

    • 单击CDT GCC内置编译器设置MinGW

    • 单击右侧的“上移”按钮 .

    • 在语言设置提供程序选项下

    • 单击“使用项目之间共享的全局提供程序”

    • 在命令行的命令行末尾添加-std = c 1y以获取编译器规范 .

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

    第2步让编译器工作

    • 转到项目 - >属性 - > C / C构建 - >设置 .

    • 转到“工具设置”选项卡 .

    • 展开GCC C编译器

    • 单击方言从“语言标准”下拉列表中选择要标记的C标准 .

  • -1

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

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

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

    • 打开首选项并转到C / C - >构建 - >设置 .

    • 单击“发现”选项卡,然后选择“CDT GCC内置编译器设置” .

    • 根据需要修改下面显示的命令字符串 . 例如,这里我添加了-std = c 11 .

    • Eclipse CDT将在保存C文件后自动重新编制索引 . 但是,我发现这并没有删除未解决的项目 .

    • 我通过右键单击项目并选择Index - > Rebuild手动重新编制索引 . 这有效!

相关问题