VSCode IntelliSense提出.h文件,但标记为未找到

时间:2019-05-28 13:14:53

标签: c++ visual-studio-code clang++ include-path

我无法使用Visual Studio Code编译一个简单的愚蠢的演示“项目”。

在尝试丰富我的知识组合时,我尝试手动学习基础知识,也就是说,我尝试手动编译代码,否则Visual Studio Enterprise IDE会自动完成所有工作。因此,我决定在Mac + clang ++上使用Visual Studio Code进行简单的演示项目。

我的问题是:我有一个工作区。在此工作空间中,我有一些目录。这些称为“函数和标题”的目录之一再次包含目录:debug,release,include,src。在let run = 1; //with initial value set ["a", "b", "c"].reduce((accumulator, item) => { console.log(run++, accumulator, item); }, "some initial value")目录中,我有一个src文件,其中包含两个虚拟方法:

functions.cpp

并在main.cpp中:

int add(int x, int y)
{
    return x + y;
}

int subtract(int x, int y)
{
    return x - y;
}

在我的#include "functions.h" int main() { int x = add(1, 3); int y = subtract(5,1); return 0; } 文件夹中,有两个方法声明:

include

有趣的一点是:当我进入int add(int x, int y); int subtract(int x, int y); 并键入main.cpp时,IntelliSense会找到#include "并向我提出该文件。 此外,方法调用会正确突出显示。但是:在包含文件之后,Visual Studio Code将文件标记为已读,并说:找不到functions.h文件。

这是视觉Studio代码错误吗?因为我也看过设置,所以设置似乎还可以(参见图片)。

C语写道:

functions.h

我错过了什么还是做错了什么?我还在这里查看了其他类似的问题,但是没有任何帮助。

图片:

Settings File main.cpp File

1 个答案:

答案 0 :(得分:2)

的确。允许#include "functions.h"自动完成的VSCode包含路径与通往编译器的有效路径无关。有两种解决方法:

修复源文件中的路径

由于您要包含functions.h目录中的标头./src,请尝试编写:

#include "../include/functions.h"

int main()
{
    int x = add(1, 3);
    int y = subtract(5,1);
    return 0;
}

这应该有效。除非为编译器提供特定的包含路径,否则clang++像大多数其他C ++编译器一样,将解释相对于源文件位置的路径。在这种情况下,它需要先进入一个目录,然后进入include目录才能找到functions.h头文件。

将包含路径添加到clang++

通过阅读clang++手册页,可以确定-I标志可用于指定编译器搜索以查找头文件的附加包含路径。因此,假设命令是从./目录运行的,则从src目录和项目的根目录中跳出一个命令:

clang++ src/main.cpp -I./include

还将解决当前的问题。