2026年最新Windows11下VSCode配置GCC开发C语言环境保姆级教程
本文转载自个人博客若内容存在缺失或后续有更新可通过下方链接跳转至原博客页面查阅完整内容2026年最新Windows11下VSCode配置GCC开发C语言环境保姆级教程 - 萑澈的寒舍https://hs.cnies.org/archives/vscode-gcc-setup网上关于 VS Code 配 C 语言环境的教程很多但不少写法要么太旧还停留在手动装 MinGW要么太省事直接让你装一堆插件最后能跑是能跑出了问题也不知道该改哪里。我这次是按自己平时会长期用的方式重新配了一遍MSYS2 GCC/GDB VS Code 官方 C/C 扩展。这套配置是按C 程序直接可用来写的当前文件可以直接编译按F5能进调试项目目录里只留一个.vscode文件夹迁移起来也方便。如果你后面要拿它写 C思路也差不多但tasks.json里的gcc.exe需要换成g.exe编译参数也得按 C 习惯再调一下。本文先把 C 语言这条线讲清楚。第一步安装 MSYS2并准备好 GCC / GDB我这里没有用一些年代比较久的 MinGW 打包器而是直接用MSYS2。原因很简单包管理方便更新也干净后面装gcc、gdb、make这类工具都省心。访问 MSYS2 官网点击 msys2-x86_64-20260322.exe 下载最新版。如果国内网络下载速度较慢可以使用访问 清华大学开源镜像站点击 /msys2/distrib/msys2-x86_64-latest.exe。安装过程按默认流程走一直点下一步就行路径建议自己一开始就定好。本文后面的配置文件默认都是按C:\msys64来写的。装完以后在开始 - 全部 - MSYS2 打开MSYS2 MinGW x64终端。先更新系统再装编译链pacman -Syu如果更新后提示关闭窗口重开就照做。重新打开后继续执行pacman -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb make安装完成后先确认一下工具确实在gcc --version gdb --version如果有输出证明安装成功。第二步配置环境变量按 Wins搜索环境变量点击编辑系统环境变量在弹窗的窗口点击右下角的环境变量按钮在用户变量下点击 Path - 编辑在弹出的窗口点击 新建输入下面路径如果修改了安装位置将C:\msys64改为实际安装路径即可然后点击确定。C:\msys64\mingw64\bin右键开始点击终端在终端中输入下面命令输出 GCC 版本号证明环境变量配置成功gcc --version如果这一步报错则需要在系统变量中完成上方用户变量同样的环境变量配置第三步安装 VS Code点击访问 VS Code 官网点击Download for Windows下载安装包打开安装包按默认流程走一直点下一步就行打开 VS Code发现页面为英文。点击左侧栏的扩展按钮搜索Chinese点击第一个安装简体中文插件。安装完成后右下角提示Change Language and Restart点击按钮重启 VS Code 即可第四步安装扩展这里我用的是Microsoft 官方的 C/C 扩展。如果你用的是 VSCodium思路也完全一样。在扩展搜索C安装C/C DevTools和C/C Extension Pack两个扩展装完以后代码高亮、错误提示、断点调试这些基础能力才会正常工作。第五步修改配置随便建一个项目目录比如D:\Code\hello-c然后打开这个项目然后在项目里新建.vscode目录把下面 4 个文件放进去每个文件的具体内容在下面.vscode/ ├── c_cpp_properties.json ├── launch.json ├── settings.json └── tasks.json我自己这套配置里真正关键的是前三样思路tasks.json负责“怎么编译、怎么运行”launch.json负责“按 F5 时怎么调试”c_cpp_properties.json负责“编辑器该用哪个编译器做智能提示”settings.json主要是补一些 C 头文件关联属于锦上添花不是必须1.tasks.json这个文件决定 VS Code 编译当前文件时到底执行什么命令。{ version: 2.0.0, tasks: [ { label: C: gcc 生成活动文件, type: shell, command: C:/msys64/mingw64/bin/gcc.exe, args: [ -fdiagnostics-coloralways, -g, ${file}, -o, ${fileDirname}\\${fileBasenameNoExtension}.exe, -O2, -Wall ], options: { cwd: ${fileDirname}, shell: { executable: C:\\Windows\\System32\\cmd.exe, args: [/d, /c] } }, problemMatcher: [$gcc], group: { kind: build, isDefault: true } }, { label: C: 运行 exe, type: shell, command: ${fileDirname}\\${fileBasenameNoExtension}.exe, options: { cwd: ${fileDirname}, shell: { executable: C:\\Windows\\System32\\cmd.exe, args: [/d, /c] } } }, { label: C: 编译并运行, dependsOrder: sequence, dependsOn: [ C: gcc 生成活动文件, C: 运行 exe ] } ] }这份配置有几个点值得注意command直接指定了gcc.exe的绝对路径所以不吃系统环境变量。如果你用的是别的路径比如D:\msys64那就把command改掉。如果编译 C 项目需要把gcc.exe改为g.exe。-g是给gdb调试准备的不要删-O2 -Wall属于比较常见的日常编译参数输出文件就是“当前源文件同目录下、同名的exe”2.launch.json这个文件是给F5调试用的{ version: 0.2.0, configurations: [ { name: 运行当前 C 程序, type: cppdbg, request: launch, program: ${fileDirname}\\${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: true, MIMode: gdb, miDebuggerPath: C:/msys64/mingw64/bin/gdb.exe, preLaunchTask: C: gcc 生成活动文件, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }它的逻辑也很直白先执行preLaunchTask也就是先编译然后调用gdb.exe调试目标是当前文件编译出来的那个exe所以只要tasks.json里的编译能过这里一般就能接上。3.c_cpp_properties.json这个文件主要影响 VS Code 的智能提示、报错标记和头文件解析{ configurations: [ { name: Win32, includePath: [ ${workspaceFolder}/** ], defines: [ _DEBUG, UNICODE, _UNICODE ], compilerPath: C:/msys64/mingw64/bin/gcc.exe, cStandard: c23, cppStandard: c20, intelliSenseMode: windows-gcc-x64, compilerArgs: [ -O2, -Wall ] } ], version: 4 }这里最重要的是这两个字段compilerPathintelliSenseMode前者告诉扩展“我实际用的是哪一个编译器”后者告诉扩展“按什么模型去理解这个编译器环境”。如果你装的是 MSYS2 的mingw64GCC那么windows-gcc-x64这组配置基本就是对的。我这里把cStandard设成了c23。如果你的课程、OJ 或项目环境还停留在旧标准也可以改成c17或c11。4.settings.json这个文件不是必须但如果你后面还会写 C标准库头文件有时会被识别得更顺一点。{ files.associations: { *.tcc: cpp, list: cpp, iostream: cpp, chrono: cpp, random: cpp, limits: cpp, valarray: cpp, ostream: cpp, iomanip: cpp, atomic: cpp, compare: cpp, optional: cpp, future: cpp, numeric: cpp, sstream: cpp, cmath: cpp, string: cpp, string_view: cpp, array: cpp, memory: cpp, istream: cpp, functional: cpp, tuple: cpp, utility: cpp, variant: cpp } }如果你现在只写 C这个文件甚至可以先不放。它更多是给后面顺手写 C 时准备的。第六步测试验证在项目里新建一个hello.c#include stdio.h int main(void) { printf(Hello, world!\n); return 0; }点击这里直接运行代码你也可以按下面顺序测试编译按Ctrl Shift B选择默认构建任务C: gcc 生成活动文件。如果没报错当前目录下会生成一个同名exe。编译并运行按Ctrl Shift P输入Tasks: Run Task选C: 编译并运行。这样会先编译再直接把程序跑起来。调试按F5选择运行当前 C 程序。VS Code 会先调用gcc编译再接入gdb。这时候断点、单步执行、变量查看就都能用了。常见问题1. 运行代码黑色窗口闪了一下这是因为程序执行完就立刻退出了窗口也会跟着关闭。想看清输出结果可以在程序末尾临时加一行system(pause);让程序停一下再结束。也可以在终端中执行 编译 - 运行 的命令这样窗口不会闪退。#include stdio.h #include stdlib.h int main(void) { printf(Hello, world!\n); system(pause); return 0; }2. 使用 VS Code 底部面板终端如果不想每次都弹出单独的黑色窗口可以把launch.json里的externalConsole: true改成externalConsole: false。这样调试时通常就会走 VS Code 的集成终端运行和查看输出都会更方便。3. 开启自动保存如果经常忘记保存编译或运行时就可能不是最新代码。可以在 VS Code 里开启自动保存减少这类低级问题写代码和调试都会更顺手。4. 我想继续写 C可以最把tasks.json里的编译器从gcc.exe改成g.exe然后按你的需要补上 C 的编译参数。本文这份配置没有直接把 C 构建也一起塞进去主要是为了先把 C 这条路径保持得足够干净。总结如果你只是偶尔刷题装个 Code Runner 也不是不行但如果你想把 VS Code 当成正经开发环境来用希望编译、运行、调试这三件事都在一套逻辑里那这套方式会稳很多。它的好处不在于“最省步骤”而在于后面好维护。项目里留着.vscode四个文件哪天你换电脑、换目录、换编辑器分支基本都能很快接回来。我自己现在更愿意用这种配置而不是每次遇到问题都去猜某个插件到底帮我偷偷做了什么。