vs code运行c代码需mingw-w64(非旧版mingw)+c/c++插件+code runner:旧版mingw不支持c11/c17、gcc版本老旧、gdb易崩溃;tasks.json须用绝对路径、-std=c17、-wall及双反斜杠路径;code runner乱码需设runinterminal:true并chcp 65001,一闪而过需加pause;c_cpp_properties.json的includepath须精确到子目录,否则头文件无法跳转。

VS Code 本身不带 C 编译器,必须手动配好编译器 + 插件才能编译运行 C 程序;最稳的组合是 MinGW-w64(非旧版 MinGW)+ C/C++ 插件 + Code Runner,三者缺一不可。
为什么不能用旧版 MinGW?
旧版 MinGW(mingw-get-setup.exe)已多年未更新,不支持 C11/C17 标准,gcc -v 显示版本常卡在 4.8.x,且 gdb 调试会崩溃。实际测试中,printf_s、_Generic、static_assert 等现代语法直接报错。
推荐使用 MinGW-w64(注意不是 MinGW),下载地址优先选:
-
https://github.com/msys2/msys2-installer/releases(装完后用pacman -S mingw-w64-x86_64-gcc) - 或直接解压离线包(如
mingw64.7z),路径不含空格和中文,例如D:mingw64
配置环境变量时,只加 D:mingw64in 到 Path,加完务必重启 VS Code(不是仅关闭窗口,要彻底退出进程)。
tasks.json 中 args 参数怎么写才不出错?
很多人复制网上的 tasks.json 后编译失败,根本原因是 args 里混用了 Windows 和 Linux 风格路径、漏了必要标志,或用了已废弃选项。
一个能跑通的最小可用配置(针对 hello.c):
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "gcc build active file",
"command": "D:\mingw64\bin\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\${fileBasenameNoExtension}.exe",
"-Wall",
"-std=c17"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": ["$gcc"],
"group": "build",
"detail": "compiler: gcc"
}
]
}
关键点:
-
command必须写绝对路径,不能只写gcc(否则可能调到系统其他 gcc) -
-std=c17显式指定标准,避免默认c89导致新语法报错 -
-Wall打开基础警告,早发现隐式声明、未使用变量等问题 -
${fileDirname}\${fileBasenameNoExtension}.exe用双反斜杠适配 Windows 路径
Code Runner 运行结果乱码或一闪而过?
这是新手最常遇到的问题,本质是终端编码或执行方式不匹配:
- 乱码:VS Code 终端默认用 UTF-8,但 MinGW-w64 编译出的 exe 在 cmd 中运行时用的是 GBK。解决方法是在
settings.json加:"code-runner.runInTerminal": true,再在终端里手动执行chcp 65001切换为 UTF-8 - 一闪而过:因为
Code Runner默认用cmd /c启动,执行完立即关闭窗口。改法是右键代码 → “Run Code”,或在settings.json中加:"code-runner.executorMap": {"c": "cd $dir && D:\mingw64\bin\gcc.exe -g $fileName -o $fileNameWithoutExt.exe && $dir$fileNameWithoutExt.exe"},最后加个pause(Windows 下)或read -p "Press any key..."(WSL 下) - 不要勾选
code-runner.clearPreviousOutput,否则看不到上一次错误信息
c_cpp_properties.json 的 includePath 填错会怎样?
填错不会导致编译失败,但会导致 VS Code 无法跳转定义、报假错误(比如标红 stdio.h)、Ctrl+Click 失效。
正确写法(以 D:mingw64 为例):
"D:\mingw64\x86_64-w64-mingw32\include""D:\mingw64\lib\gcc\x86_64-w64-mingw32\13.2.0\include"-
"D:\mingw64\lib\gcc\x86_64-w64-mingw32\13.2.0\include\c++"(如果写 C++ 混合代码)
别直接填 D:\mingw64\include —— 这个路径下其实什么都没有,是常见误区。
验证是否生效:打开 hello.c,把光标停在 #include <stdio.h></stdio.h> 上,按 Ctrl+Click,能跳进头文件才算对。
13万字C语言保姆级教程(深入):立即使用
在学习笔记中,你将探索c语言的核心概念和高级技巧!











