VSCode配置C/C++教程(详细、有资源)
VS Code 配置 C/C++ 编程运行环境
什么是 Visual Studio Code?
Visual Studio Code(简称 VS Code)是由微软开发的一款免费、开源、跨平台的现代化源代码编辑器。它本身并不是一个集成开发环境(IDE),而是一个功能强大且高度可扩展的文本编辑器,通过安装插件可以支持几乎所有主流编程语言的开发、调试和版本控制。
主要特点:
- ✅ 完全免费:无论是个人还是商业用途,均可免费使用。
- 🌐 跨平台支持:可在 Windows、macOS 和 Linux 上运行,界面与功能保持一致。
- 🔌 丰富的扩展生态:通过官方 Marketplace 安装插件(如 C/C++、Python、GitLens 等),轻松扩展功能。
- 🛠️ 内置终端、调试器、Git 支持:无需切换窗口即可完成编译、运行和版本管理。
- 🎨 高度可定制:支持主题、快捷键、代码片段、设置同步等个性化配置。
本文以 Windows X86_64 为例,讲解 VS Code 配置 C/C++ 环境。
VS Code 安装
VS Code 下载
浏览器搜索vscode

Visual Studio Code - The open source AI code editor
适用于 Windows、Mac 和 Linux 的 Visual Studio 和 VS Code 下载
这两个网址都可以
注意,自己电脑推荐下载 System Installer(系统安装版) ,功能更完整(如全局右键菜单)。
进入这两个网址直接下载的是 用户安装版 。


都会跳转到这里
Download Visual Studio Code - Mac, Linux, Windows
下载 系统安装版

VS Code 本体安装

下载到的安装包,双击打开


将 “通过 Code 打开”操作添加到 Windows 资源管理器文件、目录上下文菜单 勾选后,之后可以在资源管理器中,右键点击后,用VS Code打开文件夹,比较方便。

设置安装路径后安装即可

插件安装
汉化
默认是英文的,在扩展中搜索 Chinese 汉化插件,安装重启后即可汉化

C/C++扩展

这些插件提供以下功能
- 🔍 IntelliSense(智能感知)
自动分析代码上下文,提供精准的变量、函数、类成员补全。 - 🧭 跳转到定义 / 查找所有引用
按住Ctrl点击函数名即可跳转到其定义位置。 - 📚 悬停查看文档与类型信息
鼠标悬停在变量或函数上,显示类型、参数说明等。 - 🛠️ 语法错误实时检查(基于编译器配置)
- 🧪 调试支持(配合
launch.json使用 GDB 或 MSVC 调试器)
只需安装 C/C++ Extension Pack(C/C++ 扩展包) ,这是一个官方推荐的一键安装包,安装后 C/C++(核心语言支持) C/C++ Themes(语法高亮主题优化)等将自动安装。
基础知识
为了说明接下来行为的目的,复习一下工具链、C/C++编译过程……这些基础概念。
工具链相关
CPU 只能执行“机器码”。
机器码是一串串由 0 和 1 组成的二进制指令,符合 CPU 的指令集架构(ISA)。不同的 CPU 架构(如 x86、ARM)指令集不同(涉及CPU半导体内部的电路……)。
例如,我的CPU是 AMD的Ryzen 7 5800H。它 x86-64 架构。

编译器(Compiler)将人类可读的高级代码,转化为 CPU 可执行的二进制机器码。
工具链是一个集合,它包含了从代码变成可执行文件所需的所有工具。
一个典型的 C/C++ 工具链包括:
- 预处理器:处理
#include、#define等指令。 - 编译器:将预处理后的代码翻译成汇编或机器码。
- 汇编器:将汇编代码翻译成目标文件(
.o或.obj)。 - 链接器:将多个目标文件和库文件合并成一个可执行文件(
.exe或 ELF)。 - 标准库:提供
printf、malloc等基础函数的实现。 - 调试器:如 GDB 或 LLDB,用于运行时调试。
- 构建系统:如 Make、CMake,用于自动化管理复杂的编译流程。
- 包管理器/环境管理器:如 MSYS2、rustup,用于安装和管理工具链版本。
C/C++编译过程
C/C++ 程序要变成可运行的文件 ,要经历 四个阶段:预处理 → 编译 → 汇编 → 链接。部分工具链会自动合并执行某些阶段。
1. 预处理 (Preprocessing)
- 输入:源代码文件 (
.c,.cpp) - 作用:文本替换与展开。预处理器是一个纯粹的文本处理工具,它不懂 C 语言语法,只负责处理以
#开头的指令。- 头文件包含:将
#include <stdio.h>等内容直接“复制粘贴”到当前文件中。这也是为什么头文件被修改后,所有引用它的源文件都需要重新编译的原因。 - 宏定义展开:将
#define PI 3.14中的PI全部替换为3.14。 - 条件编译:根据
#ifdef、#ifndef等指令,决定保留或删除哪部分代码。 - 删除注释:将所有
//和/* */注释删除。
- 头文件包含:将
- 输出:一个“纯”C++ 文件(无宏、无头文件引用),通常以
.i(C)或.ii(C++)为扩展名。
2. 编译 (Compilation)
-
输入:预处理后的文件 (
.i) -
作用:将预处理后的 C/C++ 代码 翻译成汇编语言。这是最核心的步骤,编译器将高级语言翻译成特定架构的汇编代码。
- 检查语法错误:比如少写了分号、括号不匹配、类型不兼容等。
- 代码优化:编译器会尝试优化代码逻辑(例如死代码消除、循环展开),使其运行更快。
- 生成汇编:将 C/C++ 语句转换为对应的助记符(如
mov,add,call)。
-
输出:平台相关的汇编代码文件(
.s或.asm)。
3. 汇编 (Assembly)
- 输入:汇编语言文件 (
.s) - 作用:将汇编代码 转换为机器码(二进制目标代码)。
- 汇编器将人类可读的汇编指令(如
mov eax, 1)一一对应地翻译成 CPU 能直接识别的二进制指令(如B8 01 00 00 00)。此时,代码已经变成了 CPU 可以执行的格式,但还不能运行。因为尚未解决外部引用,函数调用(如printf、std::cout)的地址还是空的(占位符),变量之间的引用关系也未确定。
- 汇编器将人类可读的汇编指令(如
- 输出:目标文件 / 机器码 (Windows 下为
.obj,Linux 下为.o)
4. 链接 (Linking)
- 输入:一个或多个目标文件 (
.obj/.o) + 库文件 (.lib/.a/.so/.dll) - 作用:符号解析与重定位。将一个或多个
.obj文件与系统库(如 CRT、C++ 标准库、Windows API)合并,生成最终的可执行文件。- 符号解析:链接器扫描所有目标文件与库文件,建立全局符号表。将代码中引用的外部函数(如
printf、std::cout)或变量与库中的具体实现进行匹配绑定。 - **段合并:**将汇编后得到的各个目标文件中同名的段(如代码段、数据段)按序拼接,合并为最终可执行文件中统一的段,便于操作系统统一加载。
- 地址重定位:根据合并后的内存布局,计算各符号的最终绝对地址。修正代码和重定位表中的地址占位符,确保函数调用指向正确位置。
- 添加运行时支持:自动链接系统启动文件(如 crt0.o),生成真正的程序入口 _start。负责在调用 main 函数前后完成环境初始化与资源清理。
- 符号解析:链接器扫描所有目标文件与库文件,建立全局符号表。将代码中引用的外部函数(如
- 输出:可执行文件 (Windows 下为
.exe,Linux 下无后缀或 ELF 格式)
关于操作系统加载
对于有完整操作系统的设备,可执行文件( .exe 或 ELF )不仅仅是机器码的堆砌,它们还包含了给操作系统看的“元数据”。
例如当Windows设备运行 .exe 时,操作系统的加载器会介入:
- 读取头部信息:加载器读取文件头,了解程序的入口点在哪里(即
main函数或_start标号的地址)、需要多少内存空间。 - 内存映射:将代码段和数据段加载到内存中。
- 动态链接:如果程序使用了动态链接库(DLL 或 .so),加载器会在运行时将这些库加载到内存并修补地址。
- 移交控制权:最后,CPU 跳转到程序的入口点开始执行第一条机器指令。
示例工程
我将分别以Windows 下常用的 MinGW-w64 与 MSVC 这两个工具链,建立简单工程进行讲解。
我将建立一个简单的示例工程,文件结构如下
DEMO/
├── A/
│ ├── a.h
│ └── a.cpp
├── B/
│ ├── b.h
│ └── b.cpp
├── main.cpp
└── build/
内容如下
main.cpp
#include <iostream>
#include <windows.h>
#include "A/a.h"
#include "B/b.h"
int main (void)
{
std::cout<<"开始测试"<<std::endl;
Function_A();
Function_B();
system("pause");//防止终端一闪而过看不清
return 0;
}
a.h
#include <iostream>
void Function_A(void);
a.cpp
#include "a.h"
void Function_A(void)
{
std::cout<<"AAA"<<std::endl;
}
b.h
#include <iostream>
void Function_B(void);
b.cpp
#include "b.h"
void Function_B(void)
{
std::cout<<"BBB"<<std::endl;
}
build文件夹用来存放生成的.exe
配置文件说明
之后需要在项目根目录下的 .vscode/ 文件夹中建立三个配置文件
c_cpp_properties.json tasks.json launch.json
先说明其作用
c_cpp_properties.json
负责 代码智能感知
告诉 VS Code 的 C/C++ 插件(IntelliSense):
-
使用哪个编译器?
-
头文件(
.h)在哪里? -
用的是 C 还是 C++?什么标准(C++11/17/20)?
-
定义了哪些宏(
#define)?
tasks.json
负责 编译构建
配置 构建任务(Build Task),即VS Code 应该执行什么命令来把源代码变成可执行文件。
launch.json
负责 调试运行
配置 调试器(Debugger) 的行为:
-
要运行哪个
.exe? -
启动前是否先编译?
-
调试时用控制台还是集成终端?
-
程序崩溃时是否停在入口?
MinGW-w64 工具链
简介
MinGW-w64(读作 “Minimalist GNU for Windows 64-bit”)是一个开源项目,它把 GNU 编译器套件(GCC) 移植到了 Windows 平台,让你能在 Windows 上使用 gcc / g++ 编译 C/C++ 程序,并生成原生的 .exe 可执行文件。这是 Windows 上配置 C/C++ 开发环境最简单、最常用的工具链之一。
🔧 核心组件
| 工具 | 作用 |
|---|---|
gcc.exe | 编译 C 代码 |
g++.exe | 编译 C++ 代码 |
gdb.exe | 调试器(支持断点、变量监视等) |
ld.exe | 链接器(将 .o 文件合并成 .exe) |
mingw32-make.exe | 构建工具 |
下载与安装
注意,如果你已经拥有(比如安装Qt时选择了这个工具链),不需要重复下载。
搜索MinGW-w64

官方网址: mingw-w64

下载地址: Pre-built Toolchains - mingw-w64

选择 Windows 的,选择 MinGW-W64-builds 这个是工具链,下面的 MSYS2 除了工具链还有一些包管理器等,本教程不讲解。
点击后跳转到

点击后进入其 GitHub 仓库: Releases · skeeto/w64devkit

本教程是 Windows x86_64 所以选择 w64devkit-x64-…这个下载
它是GitHub 国内下载慢,可以考虑以下手段
-
使用加速器
-
复制下载链接到迅雷里下载
我这里使用迅雷下载,十几秒就下载完了

双击打开后即可自动解压安装


加入环境变量(可选)
加入系统的环境变量后,之后写路径啥的会方便些,不必写出完整路径
本教程之后的配置文件会写完整路径,不加入环境变量也可以!

复制安装路径,加入环境变量
右键此电脑->属性->相关设置中->高级系统设置->环境变量



Path->编辑->编辑环境变量->加入安装路径 把bin的路径填入 bin文件夹里面是 gcc g++ 这些.exe


配置文件创建
然后为工程建立配置文件。
之后几步中,如果你找不到图形界面中点哪里,手动建立对应文件也可以。
创建 c_cpp_properties.json
点击右下角的 C/C++配置,选择配置编辑配置UI,它会自动创建 c_cpp_properties.json

进入智能感知配置

这时,会在工程文件夹中建立.vscode\c_cpp_properties.json
填入编译器路径
如果之前加入了环境变量,应当可以自动检测到

智能感知模式
Windows (x86_64) MinGW-w64 / GCC 应当选择 “windows-gcc-x64”

包含路径
根据你的工程修改

还可以在这个界面选择智能感知时的C/C++标准

c_cpp_properties.json 示例
{
// 配置数组:可定义多个环境(如 Win32、Linux、Mac)
"configurations": [
{
"name": "Win32", // 配置名称,在 VS Code 状态栏可切换;"Win32" 是默认显示名(实际用于 64 位也无妨)
// 告诉 IntelliSense 在哪些目录中查找头文件(#include 的搜索路径)
"includePath": [
"${workspaceFolder}/**" // ** 表示递归包含项目根目录下所有子文件夹(包括 A/、B/ 等)
],
// 预定义宏(相当于在代码开头自动加 #define)
"defines": [
"_DEBUG", // 启用调试模式(常用于条件编译,如 #ifdef _DEBUG)
"UNICODE", // Windows 编程常用:启用宽字符(wchar_t)版本 API
"_UNICODE" // 配合 UNICODE,确保 TCHAR 映射为 wchar_t(MinGW 下影响较小,但保留无害)
],
"cStandard": "c11", // 指定 C 语言标准(影响语法高亮和错误检查),可选:c11, c17, gnu11 等
"cppStandard": "c++14", // 指定 C++ 语言标准,可选:c++14, c++17, c++20, gnu++17 等
"compilerPath": "D:\\w64devkit\\bin\\g++.exe",
// 指向实际的 C++ 编译器路径;
// VS Code 会读取它来获取:
// - 默认系统头文件路径(如 /usr/include)
// - 内置宏定义(如 __GNUC__)
// - ABI 和目标平台信息
"intelliSenseMode": "windows-gcc-x64" // 智能感知模式
}
],
"version": 4 // 配置文件格式版本(由 VS Code C/C++ 插件定义,保持为 4 即可)
}
创建 tasks.json
本人没有找到比较好的tasks.json文件模板生成方法,建议直接复制接下来的的示例,然后再根据自己的路径修改。
我们需要判断build文件夹是否存在,然后再输入编译的相关指令,比较复杂,因此我这里先在工程中建立一个window批处理文件build.bat。
它会被tasks.json调用。
如果不这样,需要在tasks.json中输入一个很长的字符串。
build.bat
@echo off
setlocal
:: 获取当前工作目录
set "PROJECT_DIR=%CD%"
:: 构建输出目录
set "BUILD_DIR=%PROJECT_DIR%\build"
:: 确保 build 目录存在
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
:: 设置 MinGW-w64 的 bin 目录(根据你的实际路径调整)
set "MINGW_BIN=D:\w64devkit\bin"
:: 将 MinGW 加入 PATH(临时)
set "PATH=%MINGW_BIN%;%PATH%"
:: 调用 g++ 编译
g++.exe ^
-std=c++14 ^
-g ^
-O0 ^
-Wall ^
-Wextra ^
-I "%PROJECT_DIR%" ^
-o "%BUILD_DIR%\demo.exe" ^
"%PROJECT_DIR%\main.cpp" ^
"%PROJECT_DIR%\A\a.cpp" ^
"%PROJECT_DIR%\B\b.cpp"
:: 检查编译是否成功
if errorlevel 1 (
echo.
echo 编译失败!
exit /b 1
)
echo.
echo 编译成功:%BUILD_DIR%\demo.exe
-stdxxx设置C++标准,-Oxx编译器优化等级,-I xxxxx 头文件路径, -o 输出文件路径 源文件路径
相关g++指令不再赘述,还请自行查询。
示例 tasks.json
{
// VS Code 任务配置文件的版本号(固定为 "2.0.0")
"version": "2.0.0",
// 定义一个或多个构建/运行任务
"tasks": [
{
// 任务名称,在 VS Code 的任务列表中显示(如 Ctrl+Shift+P → "Tasks: Run Task")
"label": "Build Project with g++",
// 任务类型:使用 shell(如 cmd 或 PowerShell)执行命令
// 可选值:"shell"(调用系统 shell)、"process"(直接启动进程)
"type": "shell",
// 要执行的命令 这里调用批处理文件 build.bat
"command": "${workspaceFolder}\\build.bat",
// 任务执行时的环境选项
"options": {
// 设置工作目录(Current Working Directory)
// 编译器将在此目录下查找相对路径文件(如 #include "xxx")
// 必须设为项目根目录,否则头文件路径会解析错误
"cwd": "${workspaceFolder}"
},
// 错误/警告解析器:告诉 VS Code 如何从编译输出中提取错误信息
// "$gcc" 是内置的 GCC 错误匹配器,能高亮显示报错行
"problemMatcher": "$gcc",
// 将此任务归类为“构建”组,并设为默认构建任务
// 这样按 Ctrl+Shift+B 会自动运行它
"group": {
"kind": "build", // 属于构建任务
"isDefault": true // 是默认的构建任务(快捷键绑定)
},
// 在任务列表中显示的附加说明(可选)
"detail": "Run build.bat for MinGW-w64"
}
]
}
创建 launch.json
左上角,运行和调试->创建 launch.json->C++(GDB/LLDB)
MinGW-w64 应当选择 C++(GDB/LLDB)

添加配置->C/C++: (gdb) 启动
MinGW-w64 应当选择 C/C++: (gdb) 启动
之后会生成一个模板


还需要修改一些路径
要调试的可执行文件路径
// 要调试的可执行文件路径(必须与 tasks.json 中输出的路径一致)
"program": "${workspaceFolder}/build/main.exe",
目标的工作目录
// 程序运行时的工作目录(影响相对路径文件操作,如 fopen("data.txt"))
"cwd": "${workspaceFolder}",
${fileBasename} 当前文件所在目录的完整路径
${workspaceFolder} 当前工作区(项目)的根目录(即你用 VS Code “打开文件夹” 的那个目录)
MI 调试程序的路径
// GDB 可执行文件的绝对路径(确保使用 w64devkit 自带的 gdb.exe)
// 我这里是其完整路径,没有加入系统 PATH
"miDebuggerPath": "D:/w64devkit/bin/gdb.exe",
我这里希望弹出独立的cmd窗口
// 是否在外部控制台窗口中运行程序(弹出独立 cmd 窗口)
// true:适合需要输入(cin/scanf)的程序
// false(默认):在 VS Code 的 DEBUG CONSOLE 中运行(但无法输入!)
"externalConsole": true,
示例 launch.json
{
// 调试配置文件的版本号(由 VS Code C/C++ 插件定义,固定为 "0.2.0")
"version": "0.2.0",
// 定义一个或多个调试配置(可在 VS Code 左侧调试面板下拉选择)
"configurations": [
{
// 调试配置的显示名称(出现在 VS Code 调试下拉菜单中)
"name": "(gdb) 启动",
// 调试器类型:
// - "cppdbg":适用于 GDB(Linux/MinGW)或 LLDB(macOS)
// - "cppvsdbg":仅用于 Windows 上的 Visual Studio 调试器(MSVC)
// 这里使用 MinGW-w64,必须选 "cppdbg"
"type": "cppdbg",
// 调试请求类型:
// - "launch":启动并调试新程序(最常用)
// - "attach":附加到已运行的进程
"request": "launch",
// 要调试的可执行文件路径(必须与 tasks.json 中输出的路径一致)
"program": "${workspaceFolder}/build/main.exe",
// 程序启动时传入的命令行参数(数组形式)
// 例如:["input.txt", "--verbose"]
"args": [],
// 是否在进入 main() 函数第一行时暂停(方便设断点)
// true:停在 main 开头;false:直接运行直到第一个断点
"stopAtEntry": false,
// 程序运行时的工作目录(影响相对路径文件操作,如 fopen("data.txt"))
"cwd": "${workspaceFolder}",
// 设置环境变量(格式:[{"name":"KEY","value":"VAL"}])
// 留空表示继承当前环境
"environment": [],
// 是否在外部控制台窗口中运行程序(弹出独立 cmd 窗口)
// true:适合需要输入(cin/scanf)的程序
// false(默认):在 VS Code 的 DEBUG CONSOLE 中运行(但无法输入!)
"externalConsole": true,
// 使用的调试引擎模式(GDB 或 LLDB)
// MinGW-w64 必须用 "gdb"
"MIMode": "gdb",
// GDB 可执行文件的绝对路径(确保使用 w64devkit 自带的 gdb.exe)
// 我这里是其完整路径,没有加入系统 PATH
"miDebuggerPath": "D:/w64devkit/bin/gdb.exe",
// 启动调试前自动运行的任务(值必须与 tasks.json 中的 "label" 完全一致)
// 实现“一键 F5:编译 + 调试”
"preLaunchTask": "Build Project with g++",
// GDB 启动时执行的初始化命令
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true // 即使失败也不报错(兼容旧版 GDB)
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true // 即使失败也不报错(兼容旧版 GDB)
}
]
}
]
}
运行调试
配置完毕,然后即可运行调试

MSVC 工具链
如果你用过 Visual Studio 开发 C++ 那你有 MSVC 工具链
显然,在Windows X86 电脑上,直接用 Visual Studio 就行了,本文只是想说明 VS Code 确实可以用……
简介
MSVC(Microsoft Visual C++ Compiler) 是微软开发的 C 和 C++ 编译器,是 Visual Studio 集成开发环境(IDE)的核心组件之一。
- 它的可执行文件叫
cl.exe(“compile and link”) - 它是 Windows 平台上最官方、最深度集成的 C++ 编译器
- 属于 Microsoft C++ 工具链的一部分
🧱 核心组成部分
| 组件 | 作用 |
|---|---|
cl.exe | C/C++ 编译器前端,负责词法/语法分析、代码生成 |
link.exe | 链接器,将 .obj 文件和库合并为 .exe 或 .dll |
| MSVC STL | 微软实现的 C++ 标准库(开源在 GitHub:microsoft/STL) |
| UCRT (Universal C Runtime) | Windows 10+ 的 C 运行时库(替代旧的 msvcrt.dll) |
| 调试引擎 | 深度集成 Visual Studio,支持高级调试(内存可视化、并行堆栈等) |
下载与安装
略
见 Visual Studio 下载与安装


配置文件创建
创建 c_cpp_properties.json
点击右下角的 C/C++配置,选择配置编辑配置UI,它会自动创建 c_cpp_properties.json

进入智能感知到图形化配置界面

填入编译器路径
请根据你的安装位置修改

智能感知模式
Windows (x86_64) MSVC (Visual Studio) 应当选择 “windows-msvc-x64”

包含路径
根据你的工程修改

还可以在这个界面选择智能感知时的C/C++标准

c_cpp_properties.json 示例
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**" // 自动包含所有子目录
],
"defines": [],
"compilerPath": "D:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64/cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64",
"configurationProvider": "ms-vscode.cpptools"
}
],
"version": 4
}
创建 tasks.json
找不到比较好的图形界面配置方法,建议直接复制我之后的示例,然后再根据自己的路径修改。
注意一下 MSVC 它,Visual Studio 安装的 C++ 工具链(包括 cl.exe、标准库头文件、Windows SDK、链接器等)不是集中在一个目录,而是分散在多个位置,路径类似:
- 编译器 (
cl.exe):
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\<版本>\bin\Hostx64\x64\ - C/C++ 标准库头文件:
...\MSVC\<版本>\include\ - Windows SDK 头文件:
C:\Program Files (x86)\Windows Kits\10\Include\<版本>\um\,shared\,ucrt\… - 库文件 (.lib):
分布在 MSVC 目录和 Windows Kits 的Lib\子目录中
👉 这些路径不会自动加入系统 PATH 或环境变量(避免污染全局环境)。
因此,每次要在命令行使用 MSVC 工具链时,必须显式运行 vcvars64.bat
这个windows批处理文件所在位置类似
D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat
我们需要初始化环境变量,然后再输入编译的相关指令,比较复杂,因此在工程中建立一个window批处理文件build.bat
它会被tasks.json调用
build.bat
@echo off
setlocal
:: 获取工程所在目录
set "PROJECT_DIR=%CD%"
:: 构建输出目录路径
set "BUILD_DIR=%PROJECT_DIR%\build"
:: 确保 build 目录存在
if not exist "%BUILD_DIR%" mkdir "%BUILD_DIR%"
:: 初始化 MSVC 环境
call "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
:: 调用 MSVC 编译器 cl.exe 进行编译和链接
cl.exe ^
/EHsc ^
/std:c++17 ^
/Zi ^
/W4 ^
/nologo ^
/Fe:"%BUILD_DIR%\demo.exe" ^
/Fd:"%BUILD_DIR%\demo.pdb" ^
/Fo:"%BUILD_DIR%\\" ^
"%PROJECT_DIR%\main.cpp" ^
"%PROJECT_DIR%\A\a.cpp" ^
"%PROJECT_DIR%\B\b.cpp"
endlocal
tasks.json示例
{
// VS Code 任务系统的版本号,2.0.0 是当前标准格式
"version": "2.0.0",
// 定义一组任务(可以有多个,这里只定义一个)
"tasks": [
{
// 任务在 VS Code 中显示的名称(按 Ctrl+Shift+B 时看到的名字)
"label": "Build with MSVC",
// 任务类型:'shell' 表示在系统 shell(如 cmd.exe)中执行命令
"type": "shell",
// 要执行的实际命令:
// 这里调用项目根目录下的 build.bat 脚本进行编译
// ${workspaceFolder} 是 VS Code 内置变量,代表当前打开的文件夹路径
"command": "${workspaceFolder}\\build.bat",
// 额外选项配置
"options": {
// 设置命令执行时的工作目录(Current Working Directory)
// 确保 build.bat 中的 %CD% 或相对路径能正确指向项目根目录
"cwd": "${workspaceFolder}",
// 显式指定使用 Windows 的 cmd.exe 作为 shell(而非 PowerShell)
"shell": {
// cmd.exe 的完整路径(Windows 系统标准位置)
"executable": "C:\\Windows\\System32\\cmd.exe",
// /C 参数表示:“执行命令后关闭 shell”
// 即运行完 build.bat 就退出,不保持终端打开
"args": ["/C"]
}
},
// 错误/警告解析器(Problem Matcher):
// "$msCompile" 是 VS Code 内置的匹配器,能自动识别 cl.exe 输出的
// 编译错误和警告(如 "error C2065: undeclared identifier"),
// 并在“问题”面板中高亮显示,支持点击跳转到代码位置
"problemMatcher": "$msCompile",
// 将此任务归类为“构建”组,并设为默认构建任务
"group": {
// 'kind': 'build' 表示这是构建类任务(Ctrl+Shift+B 会触发它)
"kind": "build",
// 'isDefault': true 表示这是默认的构建任务(无需选择,直接运行)
"isDefault": true
}
}
]
}
创建 launch.json
左上角,运行和调试->创建 launch.json->C++(Windows)
MSVC 应当选择 C++(Windows)

添加配置->C/C++: (Windows) 启动
MSVC 应当选择 C/C++: (Windows)
之后会生成一个模板


还需要修改一些路径
要调试的可执行文件路径
// 要调试的可执行文件路径(必须与 tasks.json 中输出的路径一致)
"program": "${workspaceFolder}/build/demo.exe",
目标的工作目录
// 程序运行时的工作目录(影响相对路径文件操作,如 fopen("data.txt"))
"cwd": "${workspaceFolder}",
${fileBasename} 当前文件所在目录的完整路径
${workspaceFolder} 当前工作区(项目)的根目录(即你用 VS Code “打开文件夹” 的那个目录)
再加入
//在启动调试前,先运行名为 "Build with MSVC" 的任务,去构建
"preLaunchTask": "Build with MSVC"
示例 launch.json
{
// launch.json 的 schema 版本(由 VS Code C/C++ 扩展定义)
// 不需要手动修改,保持默认即可
"version": "0.2.0",
// 调试配置列表:可以定义多个(如 Debug/Release、不同程序等)
"configurations": [
{
// 在 VS Code 调试侧边栏中显示的名称
"name": "(Windows) 启动",
// 调试器类型:
// - "cppvsdbg":使用 Visual Studio 的原生调试引擎(推荐用于 MSVC 编译的程序)
// - "cppdbg":使用 GDB/LLDB 引擎(适用于 MinGW、Linux、WSL 等)
// ✅ 对于 cl.exe 编译的 .exe,必须用 "cppvsdbg"
"type": "cppvsdbg",
// 调试请求类型:
// - "launch":启动并调试一个新进程(最常用)
// - "attach":附加到一个已在运行的进程
"request": "launch",
// 要调试的可执行文件路径
// ${workspaceFolder} 是项目根目录
// 这里指向你 build.bat 生成的 demo.exe
"program": "${workspaceFolder}/build/demo.exe",
// 传递给程序的命令行参数(数组形式)
// 例如:["--input", "file.txt"] 相当于运行 demo.exe --input file.txt
"args": [],
// 是否在程序入口点(main 函数)处自动暂停
// - true:启动后停在 main 第一行(适合检查初始状态)
// - false:直接运行(默认行为)
"stopAtEntry": false,
// 程序运行时的工作目录(Current Working Directory)
// 影响相对路径文件读写(如 fopen("data.txt", "r"))
// 通常设为项目根目录,方便访问资源文件
"cwd": "${workspaceFolder}",
// 设置额外的环境变量(格式:[{ "name": "KEY", "value": "VAL" }])
// 一般留空,除非程序依赖特定环境变量
"environment": [],
// 控制台输出方式:
// - "externalTerminal":在独立的 Windows 命令行窗口中运行程序(推荐)
// → 支持交互式输入(如 std::cin)、Ctrl+C 中断、完整终端功能
// - "integratedTerminal":在 VS Code 内置终端中运行
// - "internalConsole":仅在“调试控制台”输出(不支持输入)
"console": "externalTerminal",
//在启动调试前,先运行名为 "Build with MSVC" 的任务,去构建
"preLaunchTask": "Build with MSVC"
}
]
}
运行调试
配置完毕,然后即可运行调试

后记
如果有什么疑问,请下载资源以参考
评论区交流
还有什么问题可以问问AI,我这个文章就是千问帮着搞的。
对于复杂工程,使用CMake构建更好,之后有时间,我会出个CMake的教程。
参考资料
VSCode 中 C/C++ 安装、配置、使用全攻略:小白入门指南_vscode有自带c++吗-CSDN博客
VS Code 配置 C/C++ 编程运行环境(保姆级教程)_vscode配置c++环境-CSDN博客
最新!MinGW-w64的下载与安装(超详细!!!) - 知乎
VSCode配置C++环境(Windows篇) | 爱编程的大丙
使用的AI
更多推荐

所有评论(0)