引言
很多时候为了提高代码运行效率,或者部署到各种设备上面,比如模型需要加速或者需要烤到单片机中我们使用C语言或者C++则会方便的多,现在Python流行,渐渐忘却了C语言与C++的好,现在我重新记录一下如何在VSCode中使用C/C++语言,方便以后再次使用时能有份清晰的参考,这篇文章将会无限更新,遇到问题都会记录在最后。
1、首先自然是安装VSCode
- 这个过于简单,访问官网下载Visual Studio Code - The open source AI code editor 即可,安装在C盘以外的盘最好,然后创建一个项目文件夹比如PROJECTS。
- 然后安装一些C++必备插件,他们的扩展ID如下:
cs
ms-vscode.cpptools #C/C++
ms-vscode.cpptools-extension-pack #C/C++ entension pack
ms-vscode.cpptools-themes #C/C++ themes
MS-CEINTL.vscode-language-pack-zh-hans # 中文简体
2、安装mingW-w64
- 这个需要稍微注意一下,直接github下载:Release Release of 15.2.0-rt_v13-rev1 · niXman/mingw-builds-binaries ,如果你是windows10/11则点击
x86_64-15.2.0-release-win32-seh-ucrt-rt_v13-rev1.7z下载即可。上面的msvcrt是老版本的windows用的。

- 将这个包解压到你想解压的位置,比如D:\ProgramConfig\mw_15\mingw64,然后将这个目录添加为环境变量,并且将D:\ProgramConfig\mw_15\mingw64\bin添加到path中,这样就配置好了。


- 在windows中启动一个cmd,输入以下指令进行测试:
cs
gcc -v
# 或者
gcc --version
# 查看版本信息
g++ -v
gdb -v
# 都有输出的话代表配置成功
3、启动VSCode,打开你开始创建的PROJECTS项目文件夹
运行一个cpp文件
- 创建一个test.cpp文件,写上下面的测试代码,习惯C++就用上面的,习惯C语言就用下面的,不能两个复制到同一个cpp中。
cpp
//C++代码
#include <iostream>
int main()
{
std::cout<<"Hello World!"<<std::endl;
return 0;
}
//C语言代码
#include<stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
- 然后点击运行中的启动调试,然后点击gcc.exe或者g++.exe,C语言点击上面那个gcc.exe,C++点击下面那个g++.exe,看你自己的习惯,我建议点C++,因为C++兼容了C语言代码,但是gcc没法运行一些C++代码。


- 完事运行成功之后会生成一个.vscode文件夹,下面会有一个task.json文件:

- 这个就是json配置文件,如果你每次只允许一个cpp的话,那只要一个task.json基本上就够了之,这里给task.json写了一个注释以及教你如何修改:
bash
{
"tasks": [ // 任务数组,可以定义多个构建任务
{
"type": "cppbuild", // 任务类型:C/C++ 构建任务
"label": "C/C++: g++.exe 生成活动文件", // 任务显示名称
"command": "D:\\ProgramConfig\\mw_15\\mingw64\\bin\\g++.exe", // 编译器路径
"args": [ // 传递给编译器的参数
"-fdiagnostics-color=always", // 彩色诊断信息
"-g", // 生成调试信息
"${file}", // 当前活动文件 //!! 可修改的地方 如果你要运行多个文件,那么这里需要修改
//"${fileDirname}\\*.cpp", //!! 修改成这样则运行当前文件夹下的所有 cpp 文件
//"${fileDirname}\\fileDirname\\*.cpp", //!! 修改成这样则运行指定文件夹下的所有 cpp 文件
"-o", // 输出文件参数
"${fileDirname}\\${fileBasenameNoExtension}.exe", // 输出路径
//"${fileDirname}\\fileName\\EXEname.exe", //!! 运行多个文件的话这里需要修改成这样,保证编译成1个exe文件,你可以在中间指定你想保存的目录
],
"options": {
"cwd": "${fileDirname}" // 工作目录设置为源文件所在目录
},
"problemMatcher": [ // 问题匹配器,用于解析编译错误
"$gcc" // 使用 GCC 错误格式解析器
],
"group": { // 任务分组
"kind": "build", // 构建类型任务
"isDefault": true // 默认任务
},
"detail": "调试器生成的任务。" // 任务详细描述
}
],
"version": "2.0.0" // tasks.json 格式版本
}
运行包含多个cpp的项目文件夹
- 如果你不止运行一个cpp,而是运行某个文件夹下面的所有cpp,那么你需要进一步配置,首先按照下面的代码格式创建一个包含多项目的文件夹:
bash
simple_cpp_project/
└── src
├── functions.h (头文件)
├── functions.cpp (实现文件)
└── main.cpp (主程序)
└── build
└── EXEname.exe (编译后程序)
- 将对应的代码复制到对应的文件中:
functions.h
cpp
// 简单计算函数的声明
int add(int a, int b);
int multiply(int a, int b);
void printMessage(const char* message);
double calculateAverage(double arr[], int size);
functions.cpp
cpp
#include "functions.h"
#include <iostream>
#include <cmath>
// 加法函数
int add(int a, int b) {
return a + b;
}
// 乘法函数
int multiply(int a, int b) {
return a * b;
}
// 打印消息
void printMessage(const char* message) {
std::cout << "消息: " << message << std::endl;
}
// 计算平均值
double calculateAverage(double arr[], int size) {
if (size <= 0) return 0.0;
double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += arr[i];
}
return sum / size;
}
main.cpp
cpp
#include <iostream>
#include "functions.h"
int main() {
std::cout << "=== 多文件C++项目测试 ===\n\n";
// 测试加法
int x = 10, y = 20;
std::cout << x << " + " << y << " = " << add(x, y) << std::endl;
// 测试乘法
std::cout << x << " * " << y << " = " << multiply(x, y) << std::endl;
// 测试打印消息
printMessage("Hello from main!");
// 测试计算平均值
double numbers[] = {1.5, 2.5, 3.5, 4.5, 5.5};
int count = sizeof(numbers) / sizeof(numbers[0]);
std::cout << "数组平均值: " << calculateAverage(numbers, count) << std::endl;
std::cout << "\n多文件编译测试完成!\n";
return 0;
}
修改成适配多cpp的task.json,自己可以阅读一下哪些地方修改了,args里面参数的顺序也不要随便修改,这个C++就是如此娇弱,很容易因为位置不对导致报错,这里面最需要注意的就是fileDirname和workspaceFolder两者的不同,一个代表的是你运行文件所在的目录,一个是你的工作空间,就是你打开的项目所在的目录:
bash
{
"tasks": [ // 任务数组,可以定义多个构建任务
{
"type": "cppbuild", // 任务类型:C/C++ 构建任务
"label": "C/C++: g++.exe 生成活动文件", // 任务显示名称
"command": "D:/ProgramConfig/mw_15/mingw64/bin/g++.exe", // 编译器路径
"args": [ // 传递给编译器的参数
"-fdiagnostics-color=always", // 彩色诊断信息
"-g", // 生成调试信息
"-std=c++17", // 添加C++17标准 还有其他的比如11 14 20等
"-Wall", // 开启所有警告
// "${file}", // 当前活动文件 //!! 可修改的地方 如果你要运行多个文件,那么这里需要修改
//"${fileDirname}/*.cpp", //!! 修改成这样则运行当前文件夹下的所有 cpp 文件
"${fileDirname}/*.cpp", //!! 修改成这样则运行指定文件夹下的所有 cpp 文件
//"${workspaceFolder}/src/*.cpp", //!! 也可以写成这样,表示运行工作区下 src 文件夹中的所有 cpp 文件
//workspaceFolder 代表当前打开的工作区根目录,fileDirname 代表当前文件所在目录
// "${fileDirname}/${fileBasenameNoExtension}.exe", // 输出路径
"-o", // 输出文件参数
"${workspaceFolder}\\simple_cpp_project\\build\\project.exe", //!! 运行多个文件的话这里需要修改成这样,保证编译成1个exe文件,你可以在中间指定你想保存的目录
],
"options": {
"cwd": "${fileDirname}" // 工作目录设置为源文件所在目录
},
"problemMatcher": [ // 问题匹配器,用于解析编译错误
"$gcc" // 使用 GCC 错误格式解析器
],
"group": { // 任务分组
"kind": "build", // 构建类型任务
"isDefault": true // 默认任务
},
"detail": "调试器生成的任务。" // 任务详细描述
}
],
"version": "2.0.0" // tasks.json 格式版本
}
- ++运行!!!启动!!!进入main.cpp,点击右上角三角形的下拉中的运行C/C++文件,执行多cpp项目的编译!++

- 这样会生成exe文件在build文件夹下面,成功的话会输出:

- 然后利用生成的exe文件就可以进行代码调试了!这需要配置launch.json,点击右侧的
,按钮然后创建launch.json文件。


- launch.json,这个文件用于你上面task.json编译后生成的exe文件的调试,参考如下,如果你成功添加了mingw-W64的环境变量,那么gdb的路径可以不用配置,当然配置了也行,只是不够优雅:
bash
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program":"${workspaceFolder}/simple_cpp_project/build/project.exe", //前面和task.json对应的exe输出路径
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/simple_cpp_project/build", //工作目录设置为exe所在目录
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "", //gdb的路径,如果已经添加到环境变量中则可以留空
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
- 进入main.cpp,在你想要停止运行的地方数字左侧打上一个断电,然后点击运行下面的启动调试,或者按下键盘上面的F5键进入调试模式,这样运行到断点处程序就会停止在这里,方便你读取当前的变量类型和值,并且可以进行单步调试,一步一步运行找出你代码逻辑出现问题的地方:

4、结束
这样你的C/C++程序就运行起来了!当然可能还会遇到问题,但是只要一步一步来,按照我的步骤,绝对不会出错,有问题给我评论,我会及时回复!