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 打开这个文件夹。如下图所示:

点击打开菜单

VS Code 的打开文件菜单

选择文件夹

选择文件夹界面

打开后的操作界面

"打开工程后的 VS Code"

3、 在 mz_studio 文件内创建 C 语言源代码文件 hello.c :

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

"创建 C 语言文件"

4、 选择安装 C/C++ 扩展包。

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

"安装 C/C++ 扩展包"

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,准备运行此程序,如下图所示:

"安装 C/C++ 扩展包"

7、初次运行需要选择 C/C++ 的编译器。

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

"VSCode 选择 C 语言路径"

然后将进入编译 hello.c 的过程。

8、 编译和执行程序

待编译完成后 VS Code 会直接执行编译后的 hello.exe 文件并打印运行结果,如下图所示:

"C 语言编译结果"

至此 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,然后进入调试界面,如下图所示:

"VS Code Debug"

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

"VS Code Debug 选项"

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