1、点击
2、选择install
3、重启
4、如果重起不成功选择设置:

出现搜索框

选择:

然后重启就好了:

C语言编译环境 安装下面几个插件就可以了:

1、安装 MinGW-w64
1️⃣ 打开这个网址:
👉 https://winlibs.com/ https://cygwin.com/cgi-bin2/package-grep.cgi?grep=mingw64-x86_64&arch=x86_64https://winlibs.com/

找到标题类似:
WinLibs standalone build of GCC 13.2.0 + MinGW-w64 11.0.0 (UCRT)

选择:
-
版本:
GCC 13.x -
架构:
x86_64(64位) -
Runtime:
UCRT或MSVCRT都可以,推荐 UCRT -
文件类型:
.7z或.zip都行
2、解压
C:\mingw64\
4️⃣ 设置环境变量:
-
打开"系统属性 → 高级 → 环境变量"
-
编辑系统变量
Path -
添加:
C:\mingw64\bin
5️⃣ 验证安装:
打开 CMD 或 PowerShell 输入
gcc --version
如果显示:
gcc (x86_64-win32-seh-ucrt-gcc-13.x.x) 就成功了。
创建文件 并创建项目配置文件:
"配置文件机制与 JSON 的本质关系:
JSON(JavaScript Object Notation) 是一种非常简单的 数据格式 ,
主要作用:让程序能保存、读取配置或数据结构。
它的语法很固定:
{
"键": "值",
"数字键": 123,
"布尔键": true,
"数组键": ["a", "b", "c"],
"对象键": {
"内部键": "内部值"
}
}
📘要点:
-
外层一定是
{}(对象) -
每个键和值之间用冒号
: -
多个键值对之间用逗号
, -
字符串要用双引号
" " -
不能多写或少写逗号
⚙️ 二、VS Code 为什么用 JSON?
因为 VS Code 是跨平台的编辑器(Windows/Linux/macOS),
它需要一种 结构清晰、可读性高、通用性强 的方式来保存设置。
JSON 正好符合这三点。
所以:
-
VS Code 的配置文件全是 JSON 格式;
-
插件的设置、快捷键、编译任务、调试参数也都写在 JSON 文件里
三、VS Code 的几个主要 JSON 文件及关系
| 文件 | 作用 | 对应 VS Code 菜单 |
|---|---|---|
| settings.json | 保存个人或工作区设置 | 设置(Ctrl +,) |
| tasks.json | 定义编译/构建任务 | "运行任务" 或 Ctrl + Shift +B |
| launch.json | 定义调试器怎么启动 | F5 调试 |
| c_cpp_properties.json | 定义 C/C++ 插件使用的编译器、头文件路径、IntelliSense 模式 | C/C++ 插件内部 |
| extensions.json | 建议自动安装的插件 | 工作区建议 |
.vscode/
│
├─ c_cpp_properties.json ← 告诉 VS Code:用哪个编译器、C17 标准、头文件路径
├─ tasks.json ← 定义:按 Ctrl+Shift+B 时执行 gcc main.c -o main.exe
└─ launch.json ← 定义:按 F5 时启动哪个程序、用哪个调试器 (gdb)
关系图:
VS Code 按键或菜单动作
│
├─> 读取 tasks.json → 执行编译命令 (gcc)
│
├─> 读取 launch.json → 启动 gdb 调试程序
│
└─> 调用 c_cpp_properties.json → 提供智能补全和语法提示
五、JSON 在 VS Code 中的优势
1️⃣ 可视化可编辑 :VS Code 会自动高亮 JSON 语法。
2️⃣ 智能提示 :输入 "compilerPath" 时,会提示可选字段。
3️⃣ 跨项目通用 :你可以把 .vscode 文件夹复制到别的工程直接用。
4️⃣ 完全可控:你能精准定义编译参数、调试选项、头文件路径等。
✅ 六、举个简单例子(你现在项目的运行逻辑)
你按下 F5:
-
VS Code 读
launch.json -
launch.json找到"preLaunchTask": "build C program" -
去执行
tasks.json里"label": "build C program"的任务→ 调用
gcc main.c -o main.exe -
编译成功后,启动 GDB 调试器(
gdb.exe)运行 main.exe -
同时,智能提示来自
c_cpp_properties.json
这就是三者配合的完整链路。
✏️ 七、总结一句话
VS Code 的一切配置,本质上都是 JSON 文件在告诉它:该做什么、怎么做。
-
JSON 只是"语法规则"
-
.vscode文件夹是"配置入口" -
VS Code 根据 JSON 文件内容执行相应操作
settings.json → tasks.json → launch.json → c_cpp_properties.json
SON 就像一张「键值对清单 」,
每一条语句都有一个 名称(键 key) 和对应的 内容(值 value)。
例如:
{
"command": "gcc",
"args": ["main.c", "-o", "main.exe"],
"label": "build C program"
}
| 名称(key) | 对应动作/内容(value) | 含义 |
|---|---|---|
"command" |
"gcc" |
要执行的命令 |
"args" |
["main.c", "-o", "main.exe"] |
命令的参数 |
"label" |
"build C program" |
给任务起的名字 |
"command": "gcc" 它就知道要用终端执行 gcc 命令。
三、结构上的"上下级关系"
JSON 文件可以嵌套,
外层是对象 {},里面可以包含多个键值对或更深层对象。
{
"version": "2.0.0",
"tasks": [
{
"label": "build C program",
"type": "shell",
"command": "gcc",
"args": ["{file}", "-o", "{fileDirname}\\${fileBasenameNoExtension}.exe"]
}
]
}
这里 "tasks" 是一个"数组",里面包含一个对象 { ... }。
🔹 这个对象内部的 "command", "args" 就是该任务的详细配置。
🔹 所以 VS Code 看到 "tasks" → 知道要去找任务清单,然后逐项执行。
📘 四、总结一句话
你可以这样理解 JSON:
| 概念 | 对应意义 |
|---|---|
| "键 (Key)" | 动作、名称、属性 |
| "值 (Value)" | 这个动作对应的内容或参数 |
"对象 {}" |
一组键值对的集合 |
"数组 []" |
多个对象的有序列表 |
举个比喻:
{
"灯开关": "打开",
"风扇速度": 3,
"温度设定": 25
}
→ 程序看到这段 JSON 后,就知道:
-
"灯开关" → 打开
-
"风扇速度" → 设置为 3 档
-
"温度设定" → 调到 25℃
同样的逻辑在 VS Code 里:
{
"command": "gcc",
"args": ["main.c", "-o", "main.exe"]
}
VS Code 就知道要调用 gcc 并带上这两个参数。
SON 是一种通用的数据表示格式 ,最初由 JavaScript 语言衍生而来。
它的语法规则写在官方标准里:
RFC 8259(JSON Data Interchange Format)
https://datatracker.ietf.org/doc/html/rfc8259
对象 = { 成对的 "键": 值 }
键 = 字符串
值 = 字符串 / 数字 / 布尔 / null / 对象 / 数组
所以:
-
"键"(key)是什么名字,JSON 标准并不管;
-
你完全可以写
"hello": "world"或"light": "on"; -
它只要求语法合法,不定义这些键有什么"意义"。
👉 换句话说:
JSON 本身不规定键值含义,只规定语法格式。
📘 二、应用层的规范(谁使用,就谁定义)
虽然 JSON 不限制键名,但使用 JSON 的"程序"会定义自己的规范。
举几个例子:
| 使用者 | JSON 规范由谁定义 | 示例键名 |
|---|---|---|
| VS Code | VS Code 官方定义 | version, tasks, command, args, label |
| npm (Node.js) | npm 官方定义 | name, version, dependencies |
| Web API | 各公司/标准定义 | status, message, data |
| GitHub Copilot | 插件内部定义 | prompt, completion, metadata |
所以:
每个使用 JSON 的软件,都会根据自身需求制定"配置文件格式规范 "。
这个规范说明了------
哪些键有效,值是什么类型,作用是什么。
如果你写了一个它不认识的键,它会忽略 或报错。
三、VS Code 的 JSON 规范(编辑器级)
VS Code 读取的 .json 文件(比如 tasks.json, launch.json, settings.json)
都有自己严格的"键值规范",由 Microsoft 官方定义。
比如 tasks.json 的文档就在这里:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "gcc",
"args": ["main.c", "-o", "main.exe"]
}
]
}
每个键值的含义:
| 键名 | 类型 | 作用 |
|---|---|---|
"version" |
字符串 | 指定任务配置版本 |
"tasks" |
数组 | 任务列表 |
"label" |
字符串 | 任务名称,用于引用 |
"type" |
字符串 | 任务类型(shell/process) |
"command" |
字符串 | 要执行的命令 |
"args" |
数组 | 命令参数列表 |
四、怎么知道"哪些键是合法的"?
有三种方式 👇
1️⃣ 官方文档(最权威)
-
tasks.json → VS Code Task Schema
-
launch.json → Debugging Schema
-
c_cpp_properties.json → C/C++ Configurations
-
2️⃣ VS Code 智能提示
-
当你在 JSON 文件中输入
"command":时,VS Code 会自动弹出可选项说明。
它其实就是在后台读取官方定义的
.schema.json文件。 -
VS Code 内部自带
/schemas/tasks.schema.json -
里面列出所有可用的键名与类型。
-
3️⃣ 直接查看内置 JSON Schema 文件
五、你也可以自己定义键
如果你写自己的程序去读取 JSON,比如:
-
{
"motor_speed": 3000,
"direction": "forward"
}
然后在 C 程序中用 JSON 解析库(如 cJSON)去读取:
-
cJSON_GetObjectItem(root, "motor_speed");
------这时这些键就是你"自己定义的规范"。
✅ 所以,谁解析 JSON,谁定义它的键值规范。
六、总结一句话
| 层级 | 谁定义的 | 规定内容 |
|---|---|---|
| JSON 标准 | RFC 8259 | 语法规则(如何写) |
| 应用层 | 使用 JSON 的软件 | 各自的键名规范 |
| VS Code | Microsoft 官方 | tasks、launch 等配置键定义 |
JSON 本身没有规定"键",
是使用它的"应用程序"(如 VS Code)定义了哪些键有效、代表什么意义。
tasks.json
│
├── "version": "2.0.0" ← 必须字段,声明版本号
│
└── "tasks": [ ← 任务列表(数组)
{
"label": "build C program", ← 任务名
"type": "shell", ← 任务类型:shell / process
"command": "gcc", ← 要执行的命令
"args": [ ← 参数列表(数组)
"${file}",
"-o",
"{fileDirname}\\\\{fileBasenameNoExtension}.exe"
],
"group": { ← 分组定义
"kind": "build", ← 任务类别:build/test/none
"isDefault": true ← 是否为默认任务(Ctrl+Shift+B)
},
"problemMatcher": ["$gcc"], ← 用于解析编译错误
"options": { ← 可选:环境或路径设置
"cwd": "${fileDirname}"
},
"detail": "Compile with MinGW"
}
]
二、键值解释(来自 VS Code 官方 schema)
| 键名 | 类型 | 作用 |
|---|---|---|
"version" |
字符串 | 固定为 "2.0.0",声明任务格式版本 |
"tasks" |
数组 | 存放所有任务,每个任务都是一个对象 {} |
"label" |
字符串 | 任务名称,用于被引用 |
"type" |
字符串 | 任务执行方式:shell(用命令行)或 process(直接进程) |
"command" |
字符串 | 要执行的命令,比如 gcc 或 make |
"args" |
数组 | 命令的参数,例如源文件、输出路径 |
"group" |
对象 | 任务分组:build, test, none |
"problemMatcher" |
数组/字符串 | VS Code 内置的错误解析模板,比如 $gcc 识别 gcc 编译错误 |
"options" |
对象 | 执行任务时的附加环境,如工作目录 cwd |
"detail" |
字符串 | 任务说明文字(显示在任务列表里) |
三、实际执行顺序图
按 Ctrl + Shift + B
│
▼
读取 tasks.json → 找到默认任务 ("isDefault": true)
│
▼
执行 "command": "gcc"
└── 加上 "args" 里的参数
│
▼
终端运行命令:gcc main.c -o main.exe
│
▼
使用 problemMatcher 解析输出(高亮错误)
四、schema 文件来源(官方定义)
VS Code 的内部 schema 就是一个大的 JSON 定义文件,路径例如
你在 VS Code 中编辑时能看到自动提示,就是根据这个 schema 文件来的。
它会告诉你:
-
哪些键是必填的;
-
哪些只能写在特定层级;
-
每个键允许什么类型(string / array / object)。
-
五、再看一个
launch.json结构对照 -
launch.json
│
├── "version": "0.2.0"
│
└── "configurations": [
{
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "{fileDirname}\\\\{fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "build C program"
}
]
这两个文件配合起来:
-
tasks.json→ 负责"怎么编译" -
launch.json→ 负责"怎么运行或调试"
✅ 六、总结一句话
JSON 的 schema(模式) 定义了哪些键值是合法的、结构层级是什么。
VS Code 根据这些 schema 自动检查语法和提供智能提示
- 目录长这样
你的工程/
├─ main.c
└─ .vscode/
├─ c_cpp_properties.json ← 告诉 VS Code 用哪个编译器
├─ tasks.json ← Ctrl+Shift+B 怎么编译
└─ launch.json ← F5 怎么调试/运行
- c_cpp_properties.json(指向编译器)
{
"version": 4,
"configurations": [
{
"name": "Win64",
"compilerPath": "C:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"intelliSenseMode": "gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"defines": []
}
]
}
路径用 /,不要用 \。若你装在别处,改 compilerPath 即可。
3) tasks.json(Ctrl+Shift+B 编译)
PowerShell 版本(你终端默认是 PowerShell 就用这个):
{
"version": "2.0.0",
"tasks": [
{
"label": "build C program",
"type": "shell",
"command": "gcc",
"args": [
"${file}",
"-o",
"{fileDirname}\\\\{fileBasenameNoExtension}.exe"
],
"options": { "cwd": "${fileDirname}" },
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$gcc"],
"detail": "Compile current C file with MinGW-w64"
}
]
}
如果你用的是 cmd 终端,把 options.shell 指成 cmd.exe 也行(通常不需要改)。
- launch.json(F5 调试运行)
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "{fileDirname}\\\\{fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "build C program"
}
]
}
5) 用法就两步
-
编译 :
Ctrl + Shift + B(生成同名.exe) -
运行/调试 :
F5(会先编译,再用 gdb 跑,能断点)
6) 后续切到 A53(可选,随时改两处)
将来要给 Zynq A53 (ARMv8-A) 编译:
c_cpp_properties.json:
"compilerPath": "C:/path/to/aarch64-linux-gnu-gcc.exe"
tasks.json:
"command": "aarch64-linux-gnu-gcc"
其它不变。Linux 版 A53(有系统)就生成 ELF/可执行;裸机用 aarch64-none-elf-gcc 并加裸机链接脚本和启动文件(那是下一步话题)。
7) 常见小坑(1分钟排查)
-
gcc --version在终端能跑,VS Code 里就能用;否则检查C:\mingw64\bin是否进了系统 PATH。 -
JSON 报红线:多半是逗号、引号或层级写错,VS Code 会给出提示。
-
Ctrl+Shift+B 没输出 :那是"只编译",要看输出请按 F5 或在
tasks.json把"编译+运行"合在一起(我也可以给你合并版)
Demo 模板 适用于 VS Code + MinGW-w64 (GCC),按 Ctrl + Shift + B 就能编译并立即运行,按 F5 可调试。
你的工程/
├─ main.c
└─ .vscode/
├─ c_cpp_properties.json
├─ tasks.json
└─ launch.json
⚙️ 1️⃣ c_cpp_properties.json
{
"version": 4,
"configurations": [
{
"name": "Win64",
"compilerPath": "C:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"intelliSenseMode": "gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"defines": []
}
]
}
🧱 2️⃣ tasks.json(编译 + 自动运行)
PowerShell 版(Windows 10/11 默认终端)
{
"version": "2.0.0",
"tasks": [
{
"label": "build & run C program",
"type": "shell",
"command": "powershell",
"args": [
"-NoProfile",
"-ExecutionPolicy", "Bypass",
"-Command",
"gcc \"{file}\\" -o \\"{fileDirname}\\{fileBasenameNoExtension}.exe\\"; if (?) { & \"{fileDirname}\\\\{fileBasenameNoExtension}.exe\"; Read-Host 'Press Enter to close' }"
],
"options": { "cwd": "${fileDirname}" },
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$gcc"],
"detail": "Compile and run current C file with MinGW-w64"
}
]
}
说明:
-
先编译
gcc main.c -o main.exe -
编译成功后自动运行
main.exe -
执行完停在"Press Enter to close" 等你看输出。
🐞 3️⃣ launch.json(F5 调试)
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug C Program",
"type": "cppdbg",
"request": "launch",
"program": "{fileDirname}\\\\{fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "build & run C program"
}
]
}
🚀 使用方法
| 操作 | 快捷键 | 功能 |
|---|---|---|
| 编译并运行 | Ctrl + Shift + B |
编译当前 C 文件并自动执行 |
| 调试运行 | F5 |
编译后进入 GDB 调试,可断点、单步 |
| 停止调试 | Shift + F5 |
退出调试状态 |
🔧 小结
这样配置后:
-
VS Code 通过
c_cpp_properties.json识别你的 gcc。 -
tasks.json定义了"编译 + 运行"的动作。 -
launch.json把 F5 调试和编译任务连在一起。
只要复制这三份文件到任何新工程,就能马上写 C 代码并一键运行、调试。