首选MinGW-w64,轻量跨平台,适合控制台小项目和新手;MSVC更稳妥于GUI、WinRT及商业库。配置需匹配工具链路径、includePath顺序、-g参数及gdb调试支持。

装 MinGW-w64 还是 MSVC?看你的实际需求
Windows 上跑 C/C++,核心就两条路:用微软官方的 MSVC(Visual Studio 附带),或者用开源的 MinGW-w64(更轻量、跨平台友好)。如果你只写控制台小项目、不想装几个 GB 的 VS,MinGW-w64 是首选;但若要开发 Windows GUI、调用 WinRT 或链接某些商业库,MSVC 更稳妥。
推荐新手从 MinGW-w64 入手,下载地址是 https://www.php.cn/link/11bf14c1513b62f30e5e8be425774d30,选 x86_64 架构、posix 线程模型、seh 异常处理(比 dwarf 更兼容 C++ 异常)。
-
解压后把
mingw64\bin加进系统PATH(重启终端生效) - 在终端运行
gcc --version和gdb --version确认可用 - 别用第三方打包版(如 TDM-GCC),它们常混用旧版头文件或缺
gdb
c_cpp_properties.json 怎么写才不报红?
VSCode 的 C/C++ 插件靠 c_cpp_properties.json 告诉它头文件在哪、用什么标准、宏怎么定义。报红(比如 stdio.h 找不到)基本是 includePath 没配对,或 compilerPath 指向了错误的 gcc.exe。
手动创建该文件(路径:.vscode/c_cpp_properties.json),关键字段必须匹配你本地工具链:
立即学习“C++免费学习笔记(深入)”;
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/mingw64/x86_64-w64-mingw32/include/**",
"C:/mingw64/lib/gcc/x86_64-w64-mingw32/13.2.0/include/**"
],
"defines": [],
"compilerPath": "C:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
-
includePath顺序很重要:越靠前的路径优先级越高,重复头文件会按此顺序选取 -
intelliSenseMode必须和你用的编译器一致(gcc-x64对应 MinGW,msvc-x64对应 VS) - 路径里不要用
~或环境变量缩写,必须用绝对路径(VSCode 不展开它们)
tasks.json 编译任务为什么总失败?检查这三点
tasks.json 控制 Ctrl+Shift+B 调用哪个命令编译。常见失败不是语法错,而是路径、参数或工作目录不对。
- 确保
command是完整可执行路径,比如"C:\\mingw64\\bin\\gcc.exe"(Windows 反斜杠要双写) -
args里别漏-g(生成调试信息),否则后面launch.json无法断点 -
cwd(当前工作目录)设成"${fileDirname}",否则#include "xxx.h"相对路径会找不到
一个最小可用示例:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "gcc build active file",
"command": "C:\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": "build"
}
]
}
launch.json 启动调试时“无法启动程序”?重点查 gdb 和路径
VSCode 调试依赖 gdb,而 Windows 下 MinGW 的 gdb.exe 经常因权限或符号表缺失失败。错误信息如 Cannot execute this command while the target is running 或直接闪退,大概率是以下原因:
- 确认
gdb.exe在PATH中且能独立运行(终端输gdb --version) -
program字段必须是已编译好的.exe绝对路径,不能是.c源文件 - 编译时没加
-g,导致gdb读不到调试符号,VSCode 就认为“不可调试” -
杀毒软件拦截
gdbfork 子进程(尤其 Windows Defender),临时禁用测试
典型 launch.json 配置:
{
"version": "0.2.0",
"configurations": [
{
"name": "gdb launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
调试前务必先手动在终端运行一次生成的 .exe,确认它本身能跑通——很多“调试失败”其实是程序一运行就崩溃,和调试器无关。









