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

时间:2017-04-17 06:21:21

标签: eclipse eclipse-cdt

我有以下代码:

#include <iostream>
using namespace std;

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

    return 0;
}

IDE抱怨“矢量”:符号矢量无法解析

如果我右键点击“vector”关键字 - &gt;来源 - &gt;添加包含,没有任何反应。

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

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

我使用的是Ubuntu 16.04和Eclipse CDT Neon。

2 个答案:

答案 0 :(得分:1)

仅当项目中的其他文件已包含<vector>时才会生效。

添加包含的方式是在项目的索引中搜索它所调用的名称。如果它在索引中找到与该名称对应的绑定(函数,类型等),它会看到哪个文件声明了该绑定,然后为您包含该文件。

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

答案 1 :(得分:1)

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

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

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

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