
1. 为什么你照着教程配了半天最后还是跑不起来先问一个扎心的问题你手上的VSCode本质上是什么答案是——一个编辑器。它和你电脑上装没装任何编译器毫无关系VSCode自己没有编译C/C代码的能力它只负责帮你写代码、高亮语法、提示错误至于真正把代码变成exe这件事得靠外部工具链来完成。这就是无数新手卡在“VSCode配置C/C环境”这一步的根本原因。大部分人以为装好VSCode、装个插件就能像Visual Studio那样新建项目、直接点运行。实际上VSCode并不是一个IDE集成开发环境它是一把瑞士军刀什么都能干但什么都不自带。你要用它写C/C需要一个完整的工具链编译器、调试器、构建工具以及让这些工具和VSCode沟通的配置文件。我见过太多人把网上的教程从头抄到尾表面上都做完了一按F5就是各种红字报错。有的报“gcc不是内部或外部命令”有的是launch.json配置错了弹出诡异的下拉框让你选环境还有的是编译成功了但根本进不了断点。这些问题的根源不是网上的教程是错的而是很多人不理解这套东西是怎么串联起来的于是遇到一点细节变化就不知所措。接下来说的话是把这套配置彻底讲透。按这个思路走完事之后你不仅能跑通“Hello World”还会明白为什么tasks.json里要写那几行为什么launch.json里要配miDebuggerPath为什么有时候改一下环境变量就能解决问题。这些理解了以后换一台新电脑、换一个操作系统你也一样能自己把环境搭起来而不是重新翻一遍收藏夹里的旧教程。这次以Windows平台为例使用MinGW-w64作为编译器工具链这也是目前绝大多数教程采用的方案。原因后面会详细讲但你只需要知道这套方案免费、开源、轻量而且你在网上看到的大部分C/C教学代码它都能直接编译运行。2. 先搞清楚你要装的是什么编译器、调试器、构建工具的分工在动手下载任何东西之前先把架构图在脑子里画一遍。很多人一上来就装插件插件装了一堆结果连MinGW是什么都不知道这就属于本末倒置。2.1 四个核心角色的职责划分整个VSCode C/C的环境由四个独立的部分组成C/C编译器负责把源代码编译成机器码。在Windows上最常用的是MinGW-w64提供的gccC语言和gC语言。你写的#include stdio.h、#include iostream编译器会去它的标准库头文件目录里找这些文件然后把你的代码变成可执行文件。调试器负责让你可以打断点、单步执行、查看变量值。MinGW-w64自带的是gdb.exe。编译器和调试器是两回事你能编译成功不代表能调试成功调试器是一个单独的程序VSCode需要知道它的路径才能调用它。构建工具负责把一堆源文件组织起来编译。最简场景下你可以直接敲gcc命令编译一个文件但一个项目有十几个源文件手动一行行敲命令就疯了。MinGW-w64里附带make工具可以批量编译、按依赖关系决定先后顺序。初学阶段可以不用它但后面写多文件项目会用到。VSCode侧的工具主要是C/C扩展由微软官方提供。它做的事情包括代码高亮、智能提示、错误波浪线、代码跳转以及在F5的时候读取配置文件召唤编译器或调试器。VSCode本身不能编译但这个扩展是让你用着舒服的关键。这四个角色是分离的你装不装VSCode的扩展编译器都是独立存在的。环境配置的本质就是把VSCode和这四个角色之间的“桥梁”搭好。2.2 为什么Windows上偏偏推荐MinGW-w64Windows上的C/C编译器方案有好几个最常见的有下面表格里这几种。很多人问“用哪个好”答案取决于你想干什么。方案名称编译器调试器适用场景主要缺点MSVCVisual Studio自带cl.exeVS内置调试器Windows原生开发、Windows API、MFC不开放独立使用必须装庞大的VS对新手不友好MSYS2/Mingw-w64gcc/ggdb跨平台开发学习、算法题、开源库Windows API兼容性略逊于MSVCWSLgcc/ggdbLinux开发环境模拟需要开启WSL功能本质上是Linux环境Cygwingcc/ggdbPOSIX兼容层配置复杂环境转换有性能损耗大多数C/C教学场景、算法竞赛、开源项目入门都用MinGW-w64所以选择它非常合理。理由有几点第一它是GCC在Windows上的移植版和Linux上的编译行为几乎一致。这意味着你在电脑上写的代码扔到Linux服务器上不需要修改就能编译通过的概率很大这对后面学习Linux很有价值。第二它自带的GDB调试器功能完整能满足单步调试、断点、观察变量这些所有常见调试需求。第三安装轻量整个工具链解压才几百兆相比Visual Studio动辄几个G的体积简直是小清新。需要注意的是MinGW旧版和MinGW-w64新版是两个项目。旧版MinGW已经很久不更新对新标准支持不好不要装错了。官网上一个叫MinGW Builds的项目也停更了所以下载时尽量选MinGW-w64的活跃分支后面会讲到最新的获取方式。3. 编译器工具链的下载安装这一步是整个配置中最容易出错的环节编译器装得好不好直接决定后面所有的操作顺不顺利。这一章节我一步步讲清楚包括文件名怎么看、环境变量怎么配、装完怎么验证。3.1 下载MinGW-w64的注意事项访问MinGW-w64的官方发布页面你会看到一堆文件命名格式大致是x86_64-12.2.0-release-posix-seh-rt_v10-rev1.7z。这一串字符里每一个单词都是有含义的选错了后面会踩坑第一次选型的建议看表格字段可选值含义建议架构x86_64 / i68664位还是32位64位系统选x86_64异常处理模型seh / sjlj / dwarfWindows上程序崩溃时的处理方式x86_64选sehi686选dwarf线程模型posix / win32多线程标准支持选posix对std::thread支持完整组装的建议是选x86_64-12.2.0-release-posix-seh这样的版本。为什么要选posix而不是win32因为C11之后标准库的std::thread在win32线程模型下支持有缺陷很多新代码编译会报错选了posix模型能减少这类问题。下载下来通常是一个压缩包文件。注意这不是安装包不能双击安装需要解压到你希望安装的位置。还有把它解压到目标路径后那个文件夹名里不带任何空格也没有中文字符否则后面配置会出现很多莫名其妙的问题。3.2 文件夹结构说明与bin目录定位解压之后你会得到一个类似mingw64的文件夹里面有几个重要子目录bin存放可执行文件包括gcc.exe、g.exe、gdb.exe、make.exe等接下来配置环境变量就是指向这里。includeC/C标准库的头文件编译器会来这里找#include的文件。lib静态库和导入库。libexec编译器内部使用的辅助程序平时用不到但别删。请记住bin目录的完整路径后面配置环境变量要用它。比如我的路径是D:\Tools\mingw64\bin你需要换成自己的实际路径。3.3 环境变量配置的两种方式和验证方法Windows环境变量的本质是告诉系统“去哪里找可执行文件”。不配置的话你在命令行里敲gcc会提示“不是内部或外部命令”因为系统根本不知道gcc在哪里。方式一通过系统设置界面操作右键“此电脑”点击属性进入“高级系统设置”。点击“环境变量”按钮。在“系统变量”列表中找到名为Path的变量双击它。点击“新建”把bin目录的完整路径粘贴进去。连续点击确定关闭所有窗口。方式二在VS Code终端里临时设置有时候只是临时测试可以通过在终端执行命令来设置当前终端窗口有效# 将MinGW的bin目录追加到当前终端的PATH中 set PATHD:\Tools\mingw64\bin;%PATH%方式二适合不想动系统设置的场景但实际操作中建议还是用方式一配好全局环境变量方便以后其他工具调用。装完之后必须验证是否成功。打开一个新的终端窗口一定要新开否则看不到刚配的PATH输入以下命令gcc --version g --version gdb --version如果能看到版本号输出说明编译器工具链基本到位。如果提示找不到命令重新检查环境变量是否配置正确、bin目录路径是否写对了以及终端窗口是否重开过。提示环境变量修改后所有已经打开的命令行窗口都需要关闭重开才会生效。VS Code也是如果开在改环境变量之前最好完全关闭重新打开或者重启VS Code。4. VSCode侧的准备插件安装与首个文件的编译运行工具链就绪后接下来处理VSCode这一侧。很多人觉得这一步没什么好说的装上插件不就行了。确实操作上很简单但这里面有一些细节会影响日后的使用体验和排查问题的效率。4.1 C/C扩展的安装和作用边界打开VSCode进入扩展市场搜索“C/C”认准微软官方发布的那个扩展作者显示是Microsoft标识是蓝色C图标。安装这个扩展后你会获得这些能力语法高亮和括号匹配。智能提示IntelliSense键入代码时的自动补全、函数签名提示。代码跳转按住Ctrl点击函数名跳转到函数定义。错误波浪线语法错误时在编辑器里直接标红。调试支持配合gdb实现断点调试。但重点要记住这个扩展不负责编译。它的智能提示功能依托于它自己探测到的编译器信息如果VSCode找不到编译器或找不到标准库路径智能提示可能会失效但你的代码依然可以编译因为扩展和编译器是两回事。理解这个边界才能更快地定位问题出在哪一环。微软官方还提供了一个C/C Extension Pack里面额外包含了CMake Tools插件以后用CMake构建项目时很有帮助建议一起装上。此外Code Runner这个插件不是必须的但很多教程喜欢用它一键运行代码。我的建议是初学阶段不要急着装Code Runner先用VSCode自带的任务Tasks方式运行这样你能理解底层是怎么工作的后面遇到问题才不慌。4.2 创建第一个C文件并验证编译链扩展装好后新建一个文件夹用VSCode打开这个文件夹。在文件夹里新建一个hello.cpp文件写入最简单的代码#include iostream int main() { std::cout Hello, VSCode! std::endl; return 0; }在VSCode中打开终端快捷键Ctrl直接手动执行编译命令g hello.cpp -o hello.exe如果这一步能生成hello.exe并且运行.\hello.exe能看到输出说明你的工具链完全正常。这一步测试不需要任何配置文件纯命令行操作。我之所以特意让你先走一遍命令行是想把编译这件事和VSCode的配置剥离开。很多人配置失败不是工具链的问题而是配置文件写错了。先确认命令行能编译后面就算VSCode配置出了问题你也知道问题出在配置文件上而不是怀疑编译器没装好。4.3 这时候按F5会发生什么完成上面的步骤后你再试着按F5会发现VSCode弹出提示说找不到调试器或需要配置什么。这是正常的。因为VSCode不知道你的编译命令是什么也不知道调试器在哪里。接下来要做的就是通过两个配置文件把这些信息告诉它。配置文件一共有两个tasks.json定义“构建”编译任务告诉VSCode用哪个命令编译代码。launch.json定义“调试”运行调试器任务告诉VSCode用哪个调试器、调试哪个程序。这两个文件存放在项目根目录下的.vscode文件夹里。记住它们是项目级别的配置文件放在哪个项目的.vscode文件夹里就只对这个项目生效。5. 手写tasks.json和launch.json配置逻辑逐行拆解我最不建议的做法是直接复制粘贴一堆配置文件完事然后跑通了也不知道为什么。这里把关键文件的每一段都拆开讲清楚。5.1 tasks.json——告诉VSCode怎么编译程序先在.vscode文件夹中创建一个tasks.json文件写入下面这个版本{ version: 2.0.0, tasks: [ { label: C/C Build, type: shell, command: g, args: [ -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension}.exe ], group: { kind: build, isDefault: true }, problemMatcher: [$gcc] } ] }逐行解释这些字段的含义label任务的名字可以随便写但最好有意义后面launch.json会引用这个名字。type任务类型shell表示放到终端里去执行。还有一种process表示直接调用程序不用终端的壳但shell更通用。command编译器的可执行文件名。g是C编译器写gcc则编译C语言源文件。args传给编译器的参数列表。每一项的含义-g生成调试信息这是能否打断点的关键没有这个参数调试器无法定位到源代码行号。${file}VSCode内置变量代表当前打开的源文件完整路径。-o指定输出文件名。后面跟的${fileDirname}/${fileBasenameNoExtension}.exe意思是生成的可执行文件放在当前源文件所在目录名字和源文件相同但扩展名是.exe。group把任务标记为构建任务。isDefault: true让你可以用CtrlShiftB直接执行该任务。problemMatcher让终端输出的编译错误信息能被VSCode解析变成编辑器里的错误波浪线。$gcc是内置的匹配规则适配GCC的报错格式。这段配置组合起来的实际效果等价于你在终端里手工执行了g -g hello.cpp -o hello.exe如果当前打开的是C文件把command改成gcc即可。如果想一套配置兼容C和C可以用一个稍复杂一点的判断逻辑不过初学阶段不建议等你理解之后再玩。5.2 launch.json——告诉VSCode怎么启动调试继续在.vscode文件夹中创建launch.json{ version: 0.2.0, configurations: [ { name: C/C Debug, type: cppdbg, request: launch, program: ${fileDirname}/${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: D:/Tools/mingw64/bin/gdb.exe, preLaunchTask: C/C Build, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }重点字段解析program告诉调试器要启动哪个可执行文件。这里和tasks.json里生成的exe路径保持一致。preLaunchTask这是最关键的逻辑调试前先执行编译任务。相当于告诉VSCode“按F5之后先运行名为C/C Build的任务把源代码编译成exe然后再启动调试器”。这就把编译和调试串联起来了。miDebuggerPath调试器的路径指向你MinGW-w64里的gdb.exe。注意这里的路径分隔符建议用正斜杠/或双反斜杠\\不要用单个反斜杠因为JSON格式里单个反斜杠是转义字符。externalConsole是否弹出外部控制台。false表示在VSCode内置终端里运行程序这样输出不会乱跳窗口改成true会弹出一个独立的命令行窗口两种都能用看个人习惯。stopAtEntry调试启动时是否停留在main函数入口。初学调试的话建议改成true方便看程序是怎么进入main的。这两个文件配好之后打开hello.cpp按F5应该能正常编译、启动调试并且程序输出显示在终端中。5.3 我按F5之后为什么还是弹出奇怪的提示按了F5却没有直接开始调试而是出现一堆选项最常见的情况有这两种第一VSCode对“当前打开的文件是什么类型”产生疑惑。如果你打开的是一个不属于任何项目的文件VSCode会提示你要选择一种调试环境。解决方式是确保当前活动文件是C/C源文件.c或.cpp并且launch.json放在当前项目的.vscode目录下。第二配置里存在语法错误JSON文件不合法。注意JSON格式对逗号、引号非常敏感最后一项后面不能有逗号。VSCode用红色波浪线标出JSON语法错误时先处理它。还有一个小概率情况系统中存在其他调试器或配置文件干扰。VSCode会读取工作区所有的配置如果你打开了多个文件夹或者使用了多根工作区可能出现配置文件不在当前文件夹下的问题。最简单的方式是File Open Folder打开你的项目文件夹而不是打开单个文件。提示VSCode里有几个常用内置变量理解它们之后你就能看懂网上任何一份配置文件${file}当前文件完整路径、${fileDirname}当前文件所在目录、${fileBasenameNoExtension}当前文件名去掉扩展名。配置文件里所有的路径占位符都是靠这些变量动态计算的。6. 深入调试断点、变量监视与那些让你怀疑人生的报错配置完成后运行Hello World只是第一步。真正让这套环境发挥价值的是调试功能。很多人配好了环境结果只会点一下运行完全不知道还能干嘛这等于白配了。这里把调试功能里面最实用的几个操作讲透。6.1 调试面板的核心操作要在VSCode里进行调试左侧栏的“运行和调试”面板是主战场。这句话值回票价打断点不是让程序在这里停下来而是让程序的执行权力交回给你。程序运行到断点处会挂起你可以通过“单步跳过”F10一行一行执行通过“单步进入”F11进入函数内部通过“继续”F5直接执行到下一个断点。在调试过程中最重要的面板是“变量”窗口。它会实时显示当前作用域内所有变量的值分为“局部变量”和“全局变量”两种。这也是排查程序逻辑错误最常用的手段比到处写printf打印日志效率高得多。还有一个功能叫做“监视”可以把指定的表达式输入进去持续跟踪它的值。比如你输入i程序每执行一步都能看到i的当前值。输入sizeof(arr)之类的表达式也可以计算。这个功能在排查循环和数组越界问题时简直是神器。6.2 为什么打断点却不生效这是出现频率极高的问题通常逃不过下面三层原因第一编译时没有加-g参数。如果没有调试信息gdb无法把机器码和源代码行关联起来断点在编辑器中会显示为灰色空心圆点根本不会被触发。检查tasks.json的args里是否有-g。第二生成的可执行文件不是当前调试器正在加载的那一个。特别是改过tasks.json或launch.json之后可能exe生成到了a目录launch.json却还指向b目录。检查两个配置文件里的路径是否一致。第三程序根本没有执行到你设置断点的那一行。比如断点设置在注释行、空行或者放在一个条件永远为false的分支里gdb会有意跳过这些位置。把断点移到真实的可执行代码行上再试。6.3 一个典型的调试过程演示拿一个经典的问题“为什么我的循环只输出了10个数而不是20个”来演示一次完整调式排查过程#include iostream int main() { int sum 0; for (int i 0; i 20; i 2) { sum i; } std::cout sum sum std::endl; return 0; }在sum i;这一行打一个断点按F5进入调试。观察变量窗口i的初始值是0sum是0。按F10单步i变为2sum变为0因为00。继续单步i变为4sum变为2。到这一步你就发现问题了循环步长是2i依次是0、2、4、6……所以只执行了10次而不是20次这就是“输出10个数而不是20个”的根因。如果没有调试器你只能靠猜和试错。有了断点之后一切都有迹可循这也是配置调试环境最大的价值。7. 多文件编译、代码格式化与智能提示增强配置好了基础环境之后日常开发中还经常遇到几个问题工程文件多了怎么编译代码格式化怎么处理为什么我的代码提示总是转圈圈或者特别慢这一章把这些问题都收个尾。7.1 多源文件项目怎么编译前面tasks.json里用的是${file}只编译当前打开的那个文件。但一个真正的项目通常有多个源文件比如main.cpp、utils.cpp、utils.h这种情况下只编译当前文件就会链接失败因为函数实现在其他文件里。有两种方式应对方式一利用tasks.json里的args拼接多个文件args: [ -g, ${fileDirname}/main.cpp, ${fileDirname}/utils.cpp, -o, ${fileDirname}/main.exe ]这种方式简单直接但文件多了以后维护起来很痛苦。方式二引入CMake推荐C工程主流的构建方案是CMake。用CMake的好处是它能自动管理源文件列表、头文件路径、依赖关系而且跨平台通用。装好CMake Tools插件后只需要写一个CMakeLists.txt然后在VSCode底部的状态栏选择编译器、点击“构建”按钮即可。最简的CMakeLists.txt长这样cmake_minimum_required(VERSION 3.10) project(MyProject) add_executable(myapp main.cpp utils.cpp )这里不展开CMake的细节但提醒一点如果只是练习语法题单个文件编译足够如果开始做稍微正式一点的项目尽早接触CMake是值得的。7.2 代码格式化的配置微软的C/C扩展内置了基于clang-format的格式化工具。在源文件里按ShiftAltFVSCode会自动把代码排版对齐。默认风格是LLVM如果你习惯Google风格、WebKit风格可以在设置里搜索C_Cpp.clang_format_fallbackStyle改掉。常用风格选项Google、LLVM、WebKit、Microsoft。对习惯了某种风格的人来说格式化是个极好的工具再也不用手动对齐花括号了。7.3 IntelliSense卡顿或提示不全的排查有时候输入std::之后提示出不来或者一直转圈。这个问题通常是IntelliSense引擎在索引整个项目或者它找不到编译器导致的。排查方向如下检查编译器路径是否能被VSCode识别。在设置里搜索C_Cpp.default.compilerPath把它设为你的g完整路径形如D:/Tools/mingw64/bin/g.exe。这能让IntelliSense精准地读取标准库头文件。检查你看的是C文件还是C文件。C文件中的标准库是stdio.hC文件用的是iostream两者不要混用。检查项目文件夹里是否有巨大文件堆积。IntelliSense.index化所有文件如果目录里有一整个大型第三方库会拖慢速度。可以在settings.json里配置排除目录{ files.exclude: { **/build: true } }8. 常见报错化的全家桶排查清单这一章把网络上出现频率最高的报错集中整理一下做成一份可以直接对照的排查表。这些报错也是我在各个平台被问得最多的提前给你排掉。报错现象根本原因解决方案g 不是内部或外部命令环境变量未配置或未生效检查Path是否包含bin目录重开终端无法打开文件stdio.h/iostream编译器找不到标准库头文件检查MinGW的bin目录是否真的存在../include文件夹确认编译器路径正确launch: program does not existlaunch.json中program指定的exe不存在先手动执行编译生成exe检查tasks.json是否成功运行终端输出中文乱码Windows控制台编码与UTF-8不匹配在tasks.json中加-fexec-charsetGBK或为控制台设置UTF-8代码页管道残留无法打开终端插件冲突或VSCode内部错误重启VSCode彻底杀掉进程尝试禁用其他终端插件程序一闪而过看不到输出没有暂停机制exe执行完了窗口就关掉在代码末尾加std::cin.get();或配置externalConsole8.1 中文乱码的完整解决方案中文乱码这个问题睡眠了不少人。背后的原因其实很简单源代码文件保存的编码方式和Windows控制台默认的编码方式不一致。VSCode默认用UTF-8编码保存文件而Windows的cmd终端默认用GBK代码页936显示。解决途径有好几条方法一让编译器把字符串转成GBK在tasks.json的args里增加参数-fexec-charsetGBK编译器在生成exe时会把字符串常量里的UTF-8字符转换成GBK编码这样cmd就能正常显示了。方法二设置终端为UTF-8在settings.json里加入terminal.integrated.defaultProfile.windows: Command Prompt, terminal.integrated.env.windows: { CHCP: 65001 }或者在每个终端窗口里手动执行chcp 65001切换到UTF-8代码页。这种方法对系统整体影响更小。方法三用system(chcp 65001)不太推荐在代码里调用系统的chcp命令。这种方法虽然有效但代码里掺入了Windows特有的命令跨平台性较差。8.2 为什么我编译成功了但程序一运行就崩溃编译通过只能说明语法没问题程序崩溃是运行时逻辑错误。最常见的两种情况一是数组越界比如int arr[5]; arr[5] 1;下标越界在C/C里不会报编译错误但运行时可能破坏内存导致崩溃二是指针未初始化或空指针解引用。这两类问题的排查最佳手段都是调试器——打上断点在崩溃前的一步检查变量值尤其在“变量”面板里看指针的地址是否为0x0。还有一个容易忽略的问题如果程序运行后弹出一个Windows的“应用程序错误”对话框而不是在VSCode终端里显示输出通常是因为它访问了非法内存。此时回到调试状态VSCode会自动停在出问题的代码行上看调用堆栈就能定位到崩溃位置。8.3 要不要用tasks.json里写绝对路径有同学会问tasks.json里的路径写绝对路径好不好。我的建议是尽量用VSCode内置变量比如${fileDirname}、${workspaceFolder}。因为绝对路径换个项目就不能用了换台电脑还得改配置。用变量的配置是“位置无关”的哪个项目都能用拷贝到新电脑也一样能跑。但这个原则有一个例外miDebuggerPath建议写gdb.exe的绝对路径。因为gdb是系统工具不随项目变化用变量反而不稳定。而且如果你的环境变量里没有gdbVSCode有概率找不到它。9. 比配置本身更重要的几件事配置环境这件事第一次做是有点门槛但是搞懂原理之后以后不管是换电脑、装Linux还是跳槽换工作机这套逻辑都是通用的。这里把我这些年帮别人配置环境的经验浓缩成几条建议。第一一定要理解VSCode是编辑器而不是编译器所有“环境配置”的本质都是“把编辑器接到工具链上”。一旦你带着这个认知去操作很多网上教程里的动作就变得有迹可循了。第二配置文件尽量手写一遍而不是复制粘贴。手写的过程中你会理解每个字段的作用。哪怕抄一遍也要把每一行是什么意思搞清楚否则遇到一点小报错就会手足无措。第三遇到报错的第一步永远是把完整的错误信息读出来。不是扫一眼是逐字逐句地读。大多数报错信息已经把解决方案告诉你了就看你愿不愿意看。经常有人报错信息写着“cannot open file ...”他跑来问我其实那句话就已经说明文件路径不对了。第四环境变量配了没生效99%的情况是因为改了之后没有重开终端。这个简单的问题我见过无数人栽在上面。操作顺序是改环境变量 → 保存 → 关掉所有命令行窗口和VSCode → 重新打开 → 验证。配置C/C开发环境本身不是终点它只是你开始编程的门槛。真正重要的是跑通之后你愿意打开多少个源文件、写出多少行代码、解开多少个bug。这套配置不会替你写代码但它能让你把精力从“环境又坏了”转移到真正想做的事上。最后说一个和你日后使用频率很高的小技巧在tasks.json里把group.isDefault设置成true之后按CtrlShiftB就能直接编译不需要打开终端敲命令不用按F5进调试模式。对于快速验证一段代码能不能跑这个快捷键非常好用。调试交给F5编译确认交给CtrlShiftB两套流程分开习惯之后效率高很多。