> 技术文档 > VScode上配置C/C++_vscode配置c++

VScode上配置C/C++_vscode配置c++

近期在VScode上配置C/C++的环境,看了很多篇文章才成功,现记录一下我的步骤。

如果比较赶时间,建议可以直接看总结

目录

下载mingw

下载VScode中C/C++的插件

配置编译环境

1.创建一个新的文件夹

2.添加代码文件

C代码

C++代码 

3.生成 tasks.json 文件

C代码

C++代码

比较 

4.生成 launch.json 文件

C文件

C++文件

比较 

5.配置 C/C++ IntelliSense

6.多文件编译

C文件

​编辑

C++文件

7.子文件夹内的多文件编译

Step1: 修改tasks.json 文件

Step2: 创建子文件夹

8.C与C++文件共同编译

总结


下载mingw

下载VScode中C/C++的插件

我下载了下图的插件

配置编译环境

1.创建一个新的文件夹

(这里我创建了一个名为“test”的文件夹)

2.添加代码文件

注意:

若是C代码,文件名的后缀为.c

若是C++代码,文件名的后缀为.cpp

C代码

#includeint main(){ printf(\"Hello\"); return 0;}

C++代码 

#include using namespace std;int main(){ cout << \"hello world\" << endl; return 0;}

3.生成 tasks.json 文件

点击右上角的三角形

或者 点击三角形下拉菜单中的Debug C/C++ File

出现了下面这个界面

若编译C文件,则选择gcc

若编译C++文件,则选择g++

然后就会自动生成一个 .vscode 的文件夹,在里面自动生成了 tasks.json 文件

C代码

如果是C代码,则如下所示

C++代码

如果是C++代码,则如下所示

比较 

不难发现,在 \"label\" 与\"command\"两个选项中,二者是不同的

C代码,则是gcc

C++代码,则是g++

到了这里,代码已经可以运行了,按右上角的三角形即可运行。

但是想要进行调试,就要继续下面的操作。

4.生成 launch.json 文件

点击右上角的齿轮图标(在三角形的右边)

若是C文件,则选择gcc

若是C++文件,则选择g++

点击后,就会自动生成 launch.json 文件

C文件

C++文件

比较 

不难发现,在 \"name\"这个选项中,二者是不同的

C代码,则是gcc

C++代码,则是g++

这与前面 tasks.json 是同理的

到了这里,你就可以打断点调试了

5.配置 C/C++ IntelliSense

请参见这篇文章

VScode配置C/C++环境详细_vscode配置c++开发环境-CSDN博客

个人发现,使用默认的配置也可以

6.多文件编译

在 tasks.json 文件中,“${file}”表示编译单个文件

要想编译多个文件

如果是C文件,则改成 \"*.c\"

如果是C++文件,则改成 \"*.cpp\"

其中,* 表示全部的意思

C文件

编辑之后记得用 Ctrl + S 保存

下面我们写几个文件测试一下

文件1:add.h

int add(int x,int y);

文件2:add.c

#include\"add.h\"int add(int x,int y){ return x+y;}

修改 hello.c文件里面的内容为:

#include#include\"add.h\"int main(){ printf(\"Hello\\n\"); int a=10; int b=510; int c=add(a,b); printf(\"%d\\n\",c); return 0;}

然后就可以运行或者调试啦!

C++文件

编辑之后记得用 Ctrl + S 保存

下面我们写几个文件测试一下

文件1:add.hpp

int add(int x,int y);

文件2:add.cpp

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

修改hello.cpp的内容为:

#include #include\"add.hpp\"using namespace std;int main(){ cout << \"hello world\" << endl; int a=10; int b=510; int c=add(a,b); cout << c <<endl; return 0;}

然后就可以运行或者调试啦!

7.子文件夹内的多文件编译

细心的读者可能留意到,无论是C文件还是C++文件,上面我们都只是修改hello.c 或者 hello.cpp 文件中的内容,而没有另外创建一个类似于 test_add.c 或 test_add.cpp 的文件来测试

为什么呢???

因为如果创建了 test_add.c 或 test_add.cpp 文件,他们里面会包含main函数。

在进行编译时,会把 test_add.c 或 test_add.cpp 文件里的main函数与 hello.c 或者 hello.cpp 文件里的main函数都编译了,导致出现2个main函数的错误。

(我们知道,C/C++中是只允许存在一个main函数的)

如何解决这个问题呢?

一种方法是再创建一个文件夹,重复上述的步骤1、2、3、4、5、6

但是这样就太麻烦了,下面介绍另一种简单的方法

可以实现在当前文件夹下的 子文件夹内进行多文件编译

Step1: 修改tasks.json 文件

对于C文件:将 \"*.c\" 修改为 \"${fileDirname}\\\\*.c\"

对于C++文件:将 \"*.cpp\" 修改为 \"${fileDirname}\\\\*.cpp\"

Step2: 创建子文件夹

以C++为例:

我创建了子文件夹 sub1 sub2,

分别放入相应的文件:

sub1文件夹下的文件:

add.hpp

add.cpp 

test_add.cpp 

sub2文件夹下的文件:

hello.cpp

进入对应的文件夹里面运行,就会发现两个文件夹中的main函数互不影响,可以分别执行

sub1文件夹下运行,只输出了520

sub2文件夹下运行,只输出了hello world

 对于C文件也是同理的。

8.C与C++文件共同编译

如果想在子文件夹下进行多个C与C++文件共同编译,则如下所示,只要在 tasks.json中把编译C文件的语句与编译C++文件语句都加上即可

\"${fileDirname}\\\\*.cpp\",\"${fileDirname}\\\\*.c\",

 如果想在本文件夹下(非子文件夹内)进行多个C与C++文件共同编译,则如下所示,只要在 tasks.json中把编译C文件的语句与编译C++文件语句都加上即可

\"*.cpp\",\"*.c\",

总结

VScode上配置C/C++的流程:

  1. 下载mingw
  2. 下载VScode中C/C++的插件
  3. 编写C/C++代码
  4. 点击右上角的三角形图标,生成tasks.json 文件
  5. 点击右上角的齿轮图标,生成launch.json 文件
  6. 根据个人需要,配置 C/C++ IntelliSense
  7. 根据需要,选择编译方式:
  • 单文件编译,则不用改动
  • 本文件夹下的多文件编译,则在tasks.json 文件中加上
\"*.cpp\",//编译本文夹下的C++文件\"*.c\",//编译本文夹下的C文件
  • 子文件夹下的多文件编译,则在tasks.json 文件中加上
\"${fileDirname}\\\\*.cpp\",//编译子文件夹下的C++文件\"${fileDirname}\\\\*.c\",//编译子文件夹下的C文件