VSCode 设置中文

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:UCRTMSVCRT 都可以,推荐 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

  1. VS Code 读 launch.json

  2. launch.json 找到 "preLaunchTask": "build C program"

  3. 去执行 tasks.json"label": "build C program" 的任务

    → 调用 gcc main.c -o main.exe

  4. 编译成功后,启动 GDB 调试器(gdb.exe)运行 main.exe

  5. 同时,智能提示来自 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 的文档就在这里:

🔗 VS Code Tasks Schema

{

"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" 字符串 要执行的命令,比如 gccmake
"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 定义文件,路径例如

https://raw.githubusercontent.com/microsoft/vscode/main/extensions/configuration-editing/schemas/tasks.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 自动检查语法和提供智能提示

  1. 目录长这样

你的工程/

├─ main.c

└─ .vscode/

├─ c_cpp_properties.json ← 告诉 VS Code 用哪个编译器

├─ tasks.json ← Ctrl+Shift+B 怎么编译

└─ launch.json ← F5 怎么调试/运行

  1. 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 也行(通常不需要改)。

  1. 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 退出调试状态

🔧 小结

这样配置后:

  1. VS Code 通过 c_cpp_properties.json 识别你的 gcc。

  2. tasks.json 定义了"编译 + 运行"的动作。

  3. launch.json 把 F5 调试和编译任务连在一起。

只要复制这三份文件到任何新工程,就能马上写 C 代码并一键运行、调试。

相关推荐
小柯博客2 小时前
STM32MP1 没有硬件编解码,如何用 CPU 实现 H.264 编码支持 WebRTC?
c语言·stm32·嵌入式硬件·webrtc·h.264·h264·v4l2
铅笔小新z3 小时前
深入理解C语言内存管理:从栈、堆到内存泄露与悬空指针
c语言·开发语言
散峰而望13 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
是苏浙16 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
71-318 小时前
C语言练习题——判断水仙花数(0-100000)
c语言·笔记·学习
jzhwolp19 小时前
从基本链表到侵入式链表,体会内核设计思路
c语言·后端·设计模式
biter down20 小时前
c语言18:结构体位段联合体
c语言·开发语言
程序员buddha21 小时前
C语言操作符详解
java·c语言·算法
云知谷1 天前
【经典书籍】《代码整洁之道》第六章“对象与数据结构”精华讲解
c语言·开发语言·c++·软件工程·团队开发