在 VS Code 中,可以使用 C/C++ 扩展来实现跨文件包含 .h 头文件。
步骤如下:
(一)使用的cpp 文件和要使用的.h 文件在同一个文件夹中
在 VS Code 中打开需要使用头文件的源文件。
在源文件中使用 #include 指令引入需要的头文件。
例如,要引入一个名为 "example.h" 的头文件,可以在源文件中添加以下代码:
#include"example.h"
(二) 二者如果不在同一个文件夹的话
那么就需要加上相对路径和绝对路径了 如果在一个工程项目的话 可以使用“../ ”表示在此文件夹上一级再去引用同一个
举例
data1 和data2 文件目录结构如下,核心核心代码test.cpp,data1 里面有test.h 可以直接引用 data2的话可以使用相对路径,当然也可以使用绝对路径。同一个项目的使用相对路径非常的方便和java 导入包很像
主要cpp 代码 点击可以直接运行,
##include<iostream>
#include<vector>
// #include<test.h>
#include"test.h"
#include<algorithm>
//使用相对路径和绝对路径来配置C++ 的头文件问题
#include"../data2/Person.h"
using namespace std;
void test01(){
TreeNode *head=new TreeNode(2);
listNode *node=new listNode(1);
Person p(20,"liuBei");
cout<<p.GetAge()<<endl;
cout<<p.name<<endl;
cout<<"hello"<<endl;
}
int main()
{
test01();
system("pause");
return 0;
}
Person.h代码
#include<iostream>
using namespace std;
class Person{
public:
int age;
string name;
Person(int x,string name):age(x),name(name){}
int GetAge(){
return this->age;
}
};
struct listNode{
int val;
listNode *next;
listNode(int x):val(x),next(nullptr){}
};
test.h 代码
#include<iostream>
using namespace std;
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
//TODO:
TreeNode(int x):val(x),left(nullptr),right(nullptr){}
};
======================================================================
2023.8.19 补充,如果头文件和函数内容的文件分开编写如何处理呢?即一个文件定义头,一个文件写函数的实现。说到这里就需要 想到linux 下面的Makefile 文件的编写了。
见我的文章:
linux 系统中vi 编辑器和库的制作和使用_cat_fish_rain的博客-CSDN博客
linux系统--makefile文件,gdb 以及文件描述符_cat_fish_rain的博客-CSDN博客
这里详细得说明了制作库和编译的方法。
。现在说明解决办法:在tasks.json 文件里面添加如下,"${fileDirname}\*.cpp",并且注释掉
“${file}。就可以了
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "G:\\mingw\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
// "${fileDirname}\\*.cpp", 想要编译多个包含自定义头文件的代码,就需要把这一行加上,这行会编译当前目录下所有的.cpp 文件
//,所以需要保证所有的cpp 文件都没有错误,并且没有和主项目的不相关(没用上的不报错,但是没用)
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-std=c++17",
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
======================================================
补充想要更加深入的理解里面 的内容就需要一下三篇文章的内容,看完一下的肯定可以解决这块的问题:
cmake和vscode 下的cmake的使用详解(一)。-CSDN博客
cmake和vscode 下的cmake的使用详解(二)-CSDN博客
cmake和vscode 下的cmake的使用详解(三)-CSDN博客
喜欢的点赞,收藏一下,你的鼓励就是进步的更大动力。
版权归原作者 cat_fish_rain 所有, 如有侵权,请联系我们删除。