1.3 VSCode+MSYS2搭建 C 开发环境
使用 VS Code 可以编写 C 语言程序,但 VS Code 本身并没用编译器,因此 用 VS Code 编译和调试 C 语言程序需要使用前面我们搭建的 MSYS2 开发环境。
在使用 VS Code 编写和编译 C 语言程序时需要 C/C++ Extension Pack 这个扩展包。这个扩展包不需要提前安装。在我们编写 C 语言程序时,VS Code 会自动安装这个扩展包,并自动搜索和配置 C 语言编译器,并使其能够编译和运行。
按我如下的步骤操作即可。
搭建 C 语言编译运行环境
1、在电脑桌面上创建一个空的文件夹 mz_studio,此文件用来存放编写的 C 语言程序。
2、使用 VS Code 打开这个文件夹。如下图所示:
点击打开菜单

选择文件夹

打开后的操作界面

3、 在 mz_studio 文件内创建 C 语言源代码文件 hello.c :
操作方法:在左侧文件树内点击加号图标创建一个新的 C 语言文件 hello.c。操作方法如下图所示:

4、 选择安装 C/C++ 扩展包。
待文件创建完毕后会提示是否安装 C/C++ 的扩展包 C/C++ Extension Pack,此时选择 install 安装此扩展包。

5、 在 mz_studio 文件编辑文件 hello.c 写入如下内容:
#include <stdio.h>
int main(int argc, char * argv[]) {
printf("hello world!\n");
return 0;
}
6、 编译并运行 hello.c
将上述代码写入 hello.c 文件中然后保存。 然后点击右上方菜单中的 Run C/C++ File,准备运行此程序,如下图所示:

7、初次运行需要选择 C/C++ 的编译器。
此时 VS Code 会提示你选择的哪个 C/C++ 的编译器。在这里选择 MSYS2 里面的 gcc编译器。路径为 C:\msys64\ucrt64\bin\gcc.exe。如下图所示:

然后将进入编译 hello.c 的过程。
8、 编译和执行程序
待编译完成后 VS Code 会直接执行编译后的 hello.exe 文件并打印运行结果,如下图所示:

至此 C 语言的开发环境就已经配置成功了。上述配置后的最终结果会保存在 C:\Users\weimz\Desktop\mz_studio\.vscode\tasks.json 中。内容如下:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe build active file",
"command": "C:\\msys64\\ucrt64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
如果设置失败可以尝试修改或删除此文件后重新配置。
问题及解决办法:
如果上述执行过程提示如下错误:
PS C:\Users\weimz\Desktop\c> & 'c:\Users\weimz\.vscode\extensions\ms-vscode.cpptools-1.30.2-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-vtb22s0c.4cp' '--stdout=Microsoft-MIEngine-Out-m1hlmqe2.xo0' '--stderr=Microsoft-MIEngine-Error-dtzatnae.ig1' '--pid=Microsoft-MIEngine-Pid-ch2ktmgg.ser' '--dbgExe=C:\msys64\ucrt64\bin\gdb.exe' '--interpreter=mi'
未经处理的异常: System.IO.FileLoadException: 未能加载文件或程序集“WindowsDebugLauncher, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。强名称验证失败。 (异常来自 HRESULT:0x8013141A) ---> System.Security.SecurityException: 强名称验证失
败。 (异常来自 HRESULT:0x8013141A)
--- 内部异常堆栈跟踪的结尾 ---
此时需要删除 VS Code 扩展包的文件夹 C:\Users\weimz\.vscode\extensions\ms-vscode.cpptools-*,然后卸载 C/C++ Extension Pack VS Code 的扩展包。待重启 VS Code 后再重新安装 C/C++ Extension Pack 就可以解决上述问题。
VS Code 单步调试 C 语言程序
在使用 VS Code 编译 C 语言程序后,可是使用设置断点的方式来单步执行 C 语言程序,并能在执行过程中监控程序执行的路径以及各个变量的运行时状态。
步骤如下:
1、设置断点:在 VS Code 的 C 源文件的行号的左侧点击出现小红点来设置断点。
2、点击右上角菜单 Debug C/C++ File,然后进入调试界面,如下图所示:

3、根据需求进行单步调试,功能如下图所示:

使用 调试功能可以快速找出程序运行时的逻辑错误。