【问题标题】:VSCode IntelliSense proposes a .h file but marks it not foundVSCode IntelliSense 提出了一个 .h 文件,但将其标记为未找到
【发布时间】:2019-10-14 00:52:41
【问题描述】:

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

当我尝试丰富我的知识组合时,我尝试手动学习基础知识,也就是说我尝试手动编译代码,而 Visual Studio Enterprise IDE 不会自动完成所有工作。所以我决定在 Mac + clang++ 上使用 Visual Studio Code 来做一个简单的演示项目。

我的问题是:我有一个工作区。在这个工作区中,我有一些目录。其中一个名为 Functions and Headers 的目录又包含以下目录:debug、release、include、src。在src 目录中,我有一个包含两个虚拟方法的functions.cpp 文件:

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

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

在main.cpp中:

#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 并输入 #include " 时,IntelliSense 会找到 functions.h 并向我建议该文件。 此外,方法调用正确突出显示。但是:包含该文件后,Visual Studio Code 将文件标记为已读并说:未找到 functions.h 文件。

这是一个 Visual Studio Code 错误吗?因为我也看了一下设置,设置似乎没问题(见图)。

Clang 写道:

Ginos-MBP:src ginovalentinopensuni$ clang++ functions.cpp main.cpp main.cpp:2:10: fatal error: 'functions.h' file not found
#include "functions.h"
         ^~~~~~~~~~~~~ 1 error generated.

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

图片:

【问题讨论】:

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


    【解决方案1】:

    确实如此。允许自动完成 #include "functions.h" 的 VSCode 包含路径与编译器的有效路径无关。有两种方法可以解决这个问题:

    修复源文件中的路径

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

    #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
    

    也会解决手头的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-10
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 2022-12-16
      相关资源
      最近更新 更多