vscode json
从 “什么是 JSON” → “VSCode 里哪些 JSON 文件” → “如何修改与运用”
🧩 一、什么是 JSON?
JSON(JavaScript Object Notation)是一种数据表示格式,全名是:
JavaScript 对象表示法
但它与语言无关,现在广泛用于配置、数据交换、API通信等。
✅ 一句话理解:
JSON 是一种用
{}表示对象、用[]表示数组、用"key": "value"表示键值对的配置文件格式。
🔹 基本语法结构:
{"name": "Tom","age": 25,"skills": ["C", "Python", "Linux"],"married": false,"address": {"city": "Shenzhen","zip": "518000"}
}
{}:包裹一个对象(类似结构体)[]:数组"key":字符串类型的键名::键与值的分隔符- 值可以是:字符串、数字、布尔、对象、数组或 null
- 不能有注释(标准 JSON 不允许
//或/* */)
🔍 JSON 的语法规则:
| 特性 | 说明 |
|---|---|
键必须用双引号包裹 "key" | 单引号 'key' 会报错 |
| 最后一项后不能有逗号 | JSON 不支持“尾逗号” |
| 支持嵌套 | 对象内可以嵌套对象或数组 |
| 值类型 | string, number, object, array, boolean, null |
| 类型 | 举例 | 说明 |
|---|---|---|
| 对象(object) | { "a": 1, "b": 2 } | 一组键值对,用花括号包起来 |
| 数组(array) | [1, 2, 3] | 有序数据列表 |
| 字符串(string) | "hello" | 必须用 双引号,不能用单引号 |
| 数字(number) | 123, 3.14, -10 | 不用引号 |
| 布尔值(boolean) | true, false | 小写(和 JS/Python 一致) |
| 空值(null) | null | 表示“无”或“空” |
| 错误 | 原因 | 正确写法 |
|---|---|---|
❌ 用单引号 'key' | JSON 只支持双引号 | ✅ "key" |
| ❌ 最后一项后多逗号 | 结尾不能多 , | ✅ 删除最后一个逗号 |
| ❌ 有注释 // | JSON 不支持注释 | ✅ 删除注释 |
| ❌ 数字带前导零 | 0123 不合法 | ✅ 123 |
⚙️ 二、VS Code 中常见的 JSON 配置文件
当你写 C/C++ 时,VSCode 其实在后台靠这些 JSON 文件来帮你:
🧱 1️⃣ c_cpp_properties.json
定义 编译器路径、标准、头文件搜索路径、宏定义 等。
路径:
.vscode/c_cpp_properties.json
示例:
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include","/usr/local/include"],"defines": ["DEBUG","VERSION=1.0"],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}
🔹 功能说明:
| 字段 | 说明 |
|---|---|
includePath | 编译器搜索头文件的路径 |
defines | 预定义宏,相当于 #define DEBUG |
compilerPath | 指定编译器(如 gcc)路径 |
cStandard | C语言标准:c89/c99/c11 |
intelliSenseMode | 智能提示模式,指定编译器架构 |
🧱 2️⃣ tasks.json
定义 如何编译、构建 程序。
比如执行 gcc main.c -o main 这类命令。
路径:
.vscode/tasks.json
示例:
{"version": "2.0.0","tasks": [{"label": "build C program","type": "shell","command": "gcc","args": ["main.c","-o","main","-Wall","-g"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]
}
🔹 功能说明:
| 字段 | 说明 |
|---|---|
label | 任务名,会显示在命令面板 |
type | shell 或 process,决定用哪种执行方式 |
command | 执行的命令(比如 gcc) |
args | 命令行参数 |
group | 任务分组,如构建(build)或测试(test) |
problemMatcher | 错误信息解析规则(常用 $gcc) |
执行方式:
VSCode 中按
Ctrl+Shift+B自动执行这个构建任务。
🧱 3️⃣ launch.json
定义 如何运行 / 调试 程序(配合 gdb)。
路径:
.vscode/launch.json
示例:
{"version": "0.2.0","configurations": [{"name": "Debug C program","type": "cppdbg","request": "launch","program": "${workspaceFolder}/main","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","preLaunchTask": "build C program"}]
}
🔹 功能说明:
| 字段 | 作用 |
|---|---|
program | 要运行的可执行文件路径 |
args | 程序运行时的参数 |
cwd | 工作目录 |
externalConsole | 是否弹出终端运行 |
MIMode | 调试器类型(gdb / lldb) |
miDebuggerPath | 调试器路径 |
preLaunchTask | 调试前先执行的任务(如编译) |
🧱 4️⃣ settings.json
定义编辑器的行为,比如缩进、字体、CMake配置、编译器提示等。
路径:
.vscode/settings.json
示例:
{"editor.tabSize": 4,"editor.insertSpaces": true,"files.associations": {"*.h": "c"},"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}
🧠 三、VSCode 中 JSON 的变量与替换规则
VSCode 的 JSON 文件中可以用 ${变量} 表示动态路径:
| 变量名 | 含义 |
|---|---|
${workspaceFolder} | 当前打开的工程根目录 |
${file} | 当前编辑的文件路径 |
${fileDirname} | 当前文件所在目录 |
${fileBasename} | 文件名(不带路径) |
${fileBasenameNoExtension} | 文件名(不带扩展名) |
例:
"command": "gcc",
"args": ["${file}","-o","${fileDirname}/${fileBasenameNoExtension}"
]
相当于执行:
gcc main.c -o ./main
🧩 四、自己修改与应用的技巧
-
找规律:JSON 文件其实就是把命令写成键值对形式;
-
不会写就用 GUI:
- 按
Ctrl+Shift+P→ 搜索 “C/C++: Edit Configurations (UI)”; - 它会自动生成并修改
c_cpp_properties.json;
- 按
-
调试时先保证 tasks.json 可用;
调试器(launch.json)依赖编译任务; -
改错了 JSON 文件怎么办?
VSCode 自带语法检查,会在红色波浪线处显示错误; -
善用变量替换,避免硬编码绝对路径;
-
注意 JSON 不能有注释!
如果想写说明,可以加_note字段,例如:"_note": "用于构建 ARM 交叉编译版本"
🧱 五、一个完整 VSCode + C 的配置示例
假设工程结构如下:
project/
├── main.c
└── .vscode/├── tasks.json├── launch.json├── c_cpp_properties.json
你可以这样配置:
🧩 .vscode/c_cpp_properties.json
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**"],"compilerPath": "/usr/bin/gcc","cStandard": "c11","intelliSenseMode": "gcc-x64"}],"version": 4
}
🧩 .vscode/tasks.json
{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "gcc","args": ["main.c","-o","main","-g"],"group": { "kind": "build", "isDefault": true }}]
}
🧩 .vscode/launch.json
{"version": "0.2.0","configurations": [{"name": "Debug","type": "cppdbg","request": "launch","program": "${workspaceFolder}/main","args": [],"cwd": "${workspaceFolder}","stopAtEntry": false,"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","preLaunchTask": "build"}]
}
现在:
Ctrl+Shift+B→ 编译;F5→ 调试;- 你就完全掌握了从源码到调试的 VSCode 自动化流程。
✅ 总结一张图:
| 文件名 | 作用 | 关键字段 |
|---|---|---|
c_cpp_properties.json | 配置 IntelliSense、头文件、宏、标准 | includePath, defines |
tasks.json | 编译任务定义 | command, args |
launch.json | 运行/调试配置 | program, preLaunchTask |
settings.json | 编辑器行为 | editor., C_Cpp. |
