如何设置 Eclipse CDT 来索引/解析标准文件

How to set Eclipse CDT to index / resolve std files

我有如下一段代码:

#include <iostream>
using namespace std;

int main()
{
    vector<int> v; //Symbol vector could not be resolved

    return 0;
}

IDE 抱怨 "vector":无法解析符号向量

如果我右键单击 "vector" 关键字 -> 来源 -> 添加包含,没有任何反应。

如果我手动添加#include <vector>,那么一切都很好,文件被索引,我可以使用它的成员函数。

但是,我希望 IDE 为我生成这些包含文件,而不是手动添加它们。如何将 Eclipse 设置为这样工作?

我正在使用 Ubuntu 16.04 和 Eclipse CDT Neon。

只有当您的项目中的另一个文件已经包含 <vector>.

时,这才有效

Add Include 的工作方式是在项目的 index 中搜索调用它的名称。如果它在索引中找到对应于该名称的绑定(函数、类型等),它会查看声明该绑定的文件,然后为您包含该文件。

为此,与名称对应的绑定必须已经在索引中。对于在项目外部文件(例如标准库 headers)中声明的绑定,仅当外部文件已包含在项目中的某个文件中时才会出现这种情况。

@HighCommander4 - 我注意到,通过实践,索引器的行为与您描述的一样。必须有另一个文件已经包含 vector 才能将其包含在索引中。

鉴于此行为,我们可以执行以下操作:

  1. 一种解决方法是创建一个包含 <bits/stdc++.h> 的虚拟 cpp 文件。大多数 stl header 都在那里。 header 可用于 GCC。对于 MSVC,我们可以简单地将 的内容复制到这个虚拟 cpp 文件中。

  2. 另一种解决方法是将链接文件夹添加到 stl 的位置,在我的例子中是 /usr/include/c++/5。在这种情况下,整个 stl 库从一开始就被索引。