1. 前提条件
安装 VSCode 以及 MinGW
安装好 VSCode 中的 C/C++ 扩展
[图片上传失败...(image-e93c7c-1606314000230)]
PS: 我建议使用 chocolatey 安装,这样可以自动配置好环境变量
运行下列命令检查是否已经配置好环境变量:
gcc --version
gdb --version
2. 配置 VSCode
2.1. 创建工作文件夹
打开 Windows 的 Command Prompt,运行下列命令:(建立一个叫 project 的文件夹,里面将会放置你的程序文件,然后建立一个叫 helloworld 的子文件夹,进到子文件夹,打开 VSCode )
mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .
最后的 code .
命令会在当前文件夹打开 VSCode ,当前文件夹随即变成当前的 workspace
2.2. 创建C语言的源代码文件
点击创建新文件,命名为 helloworld.c
在源代码文件内输入:
#include <stdio.h>
int main() {
printf("Hello World!\n");
return 0;
}
保存源代码文件
2.3. 编译C语言的源代码
这一步我们需要创建一个 tasks.json
文件来告诉VSCode如何编译C语言的源代码。
在菜单中选择 Terminal > Configure Default Build Task 。随后会出现一个下拉菜单,里面会有 VSCode 预设的一些编译选项。我们这里选择 gcc.exe 这一项。
选中之后,VSCode 在当前工作文件夹下面的一个 .vscode
的文件夹中自动创建了一个 tasks.json
文件,文件内容看起来可能是这样的:
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "C:\\ProgramData\\chocolatey\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "C:\\ProgramData\\chocolatey\\bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "compiler: C:\\ProgramData\\chocolatey\\bin\\gcc.exe"
}
]
}
其中 commend
选项给出了具体执行编译任务的程序文件,在这里就是我们刚才选择的 gcc.exe
。args
选项给出的是运行编译任务时传递给 gcc
的参数。
具体内容可以参考 Visual Studio Code Variables Reference
创建好 tasks.json
之后,我们可以进行编译了。在菜单中选择 Terminal > Run Build Task
如果编译成功,你应该可以看到一个与源代码同名的 exe
可执行文件
2.4. 调试C语言的源代码
这一步我们需要创建一个 launch.json
文件来告诉 VSCode 如何编译 C 语言的源代码,即按下 F5
时启动 GDB 调试器。
在菜单中选择 Run > Add Configuration ,然后选择 C++ (GDB/LLDB) 。随后会出现一个下拉菜单,里面会有一些预设的调试配置。我们这里选择 gcc.exe 这一项。
VSCode 就会自动创建一个 launch.json
文件,同时编译并运行调试当前的 helloworld
launch.json
文件看起来可能是这样:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\ProgramData\\chocolatey\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe build active file"
}
]
}
其中 program
指定要进行调试的程序。
默认情况下,源代码中不会自动设置断点,我们可以把 stopAtEntry
的值改成 true
,这样在调试的时候,即便没有添加任何断点,调试也会停止在 main
函数的入口。
注意:preLaunchTask
指定调试之前需要执行的任务,需要确保其与 task.json
中的 label
的值一致。
2.5. 其他配置
如果希望调控更多的参数,我们可以创建一个 c_cpp_properties.json
文件,其中可以修改编译器的路径、头文件 (include) 的路径以及编译器使用的标准(如c99)等参数。
可以在 Command Palette (Ctrl+Shift+P) 中运行 C/C++: Edit Configurations (UI) 来查看这些参数,如果对参数进行了修改,VSCode 会把这些修改写入 c_cpp_properties.json
文件中。
这里我们把 C 语言的标准改为 c11 ,也可以不修改。