I. 前置条件

1.1 彻底卸载 VS Code

参考文档:华为云

1.1.1 删除安装插件

【Win + R】输入:

1%userprofile%

删除当前路径下的 .vscode 文件夹。

1.1.2 删除用户信息和缓存信息

【Win + R】输入:

1%appdata%

删除当前路径下的 CodeVisual Studio Code 文件夹。

📢 找不到 AppData 文件夹?

  1. 文件夹中点击 “查看” 勾选 “显示隐藏文件和文件夹” 即可找到。
  2. 或者 ( Win + S ) 搜索文件夹资源管理器选项,勾选 “显示隐藏文件” 即可。

1.2 安装 VS Code

官方下载:Visual Studio Code

II. 安装 MinGW-x64

2.1 通过 MSYS2 安装 Mingw-w64

  1. 下载安装包:MSYS2GitHub

  2. 运行安装程序。请注意 MSYS2 需要 64 位的 Windows 8.1 或更新版本。

  3. 在向导中,选择所需的安装文件夹。记录下该目录以备日后使用。大多数情况下,建议的目录是可以接受的。这同样适用于设置开始菜单快捷方式的步骤。完成后,确保选中 “立即运行 MSYS2 “复选框,然后选择 “完成”。这将为您打开一个 MSYS2 终端窗口。

  4. 在该终端中,运行以下命令安装 MinGW-w64 工具链:

1pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
  1. Enter 键接受 toolchain 组中默认的软件包数量。

Pic_2024-08-17_232931.png

  1. 当系统提示是否继续安装时,输入 Y

  2. 通过执行以下步骤,将 MinGW-w64 bin 文件夹的路径添加到 Windows PATH 环境变量

    1. 在 Windows 搜索栏中,键入设置以打开 Windows 设置。
    2. 搜索编辑帐户的环境变量
    3. 在您的用户变量中,选择 Path 变量,然后选择编辑
    4. 选择新建,然后将您在安装过程中记录的 MinGW-w64 目标文件夹添加到列表中。如果您使用了上面的默认设置,则此路径将为:C:\msys64\ucrt64\bin
    5. 选择确定,然后在环境变量窗口中再次选择确定以更新 PATH 环境变量。您必须重新打开任何控制台窗口,更新后的 PATH 环境变量才能生效。

2.2 检查 MinGW 安装

要检查你的 Mingw-w64 工具是否正确安装和可用,请打开一个新的命令提示符并输入:

1gcc --version
2g++ --version
3gdb --version

您应该看到输出,其中说明了您已安装的 GCC、g++ 和 GDB 的版本。如果不是这种情况

  1. 确保您的 PATH 变量条目与安装工具链的 MinGW-w64 二进制文件位置匹配。如果编译器在该 PATH 条目中不存在,请确保您已按照之前的说明操作。
  2. 如果 gcc 具有正确的输出但 gdb 没有,则您需要从 MinGW-w64 工具集中安装您缺少的软件包。
    • 如果在编译时收到“miDebuggerPath 的值无效。”消息,则原因之一可能是您缺少 mingw-w64-gdb 软件包

2.3 更新 MSYS2

安装 MSYS2 后,它将通过 pacman 进行自我更新,更多信息请参见更新指南 。要更新所有软件包,请运行以下命令:

1pacman -Suy

在某些情况下,某些核心软件包会被更新,pacman 会提示你关闭所有终端。 确认之后,你需要启动一个新的终端,再次运行更新(pacman -Suy)来更新剩余的非核心软件包。

III. 安装插件

3.1 插件下载

插件下载: Microsoft C/C++ extension

  1. 打开 VS Code
  2. 在活动栏上选择“扩展”视图图标,或使用键盘快捷键 ( Ctrl + Shift + X ) 。
  3. 搜索 c/c++code runner
  4. 选择安装

3.2 插件配置

3.2.1 C/C++

如果想对 C/C++ 扩展进行更多控制,可以创建 c_cpp_properties.json 文件,通过该文件可以更改编译器路径、包含路径、C 标准(默认为 C17)等设置。
您可以通过命令面板( Ctrl + Shift + P )运行 C/C++: Edit Configurations (UI) 命令查看配置用户界面。

Pic_2024-08-17_233131.png

这将打开 C/C++ 配置页面。在此进行更改时,VS Code 会将更改写入 .vscode 文件夹中名为 c_cpp_properties.json 的文件。
在这里,我们将配置名称改为 GCC,将编译器路径下拉菜单设置为 gcc 编译器,并将智能提示模式与编译器(windows-gcc-x64)相匹配。

Pic_2024-08-17_233231.png

Visual Studio Code 将这些设置放在 .vscode\c_cpp_properties.json 中。如果直接打开该文件,它应该是这样的:

 1{
 2    "configurations": [
 3        {
 4            "name": "GCC",
 5            "includePath": [
 6                "${workspaceFolder}/**"
 7            ],
 8            "defines": [
 9                "_DEBUG",
10                "UNICODE",
11                "_UNICODE"
12            ],
13            "cStandard": "c17",
14            "cppStandard": "c++17",
15            "intelliSenseMode": "windows-gcc-x64",
16            "compilerPath": "C:/msys64/ucrt64/bin/gcc.exe"
17        }
18    ],
19    "version": 4
20}

3.2.1 Code Runner

快捷键 ( Ctrl + , ) 打开设置,搜索:

1code-runner: run in terminal

在 Run Code 配置中勾选:[Run in Terminal]

IV. Hello World

4.1 创建应用

首先,让我们设置一个项目。

  1. 启动 Windows 命令提示符(在 Windows 搜索栏中输入Windows 命令提示符)。
  2. 运行以下命令。这些命令将创建一个名为 projects 的空文件夹,您可以在其中放置所有 VS Code 项目。在那里,接下来的命令将创建并导航到名为 helloworld 的子文件夹。从那里,您将在 VS Code 中直接打开 helloworld
1mkdir projects
2cd projects
3mkdir helloworld
4cd helloworld
5code .

“code .”命令在当前工作文件夹中打开 VS Code,该文件夹将成为您的“工作区”。通过选择是的,我信任作者来接受工作区信任 对话框,因为这是您创建的文件夹。

当您完成本教程时,您将看到在工作区的 .vscode 文件夹中创建了三个文件

  • tasks.json (构建说明)
  • launch.json (调试器设置)
  • c_cpp_properties.json (编译器路径和 IntelliSense 设置)

4.2 添加源代码文件

在文件资源管理器标题栏中,选择新建文件按钮,并将文件命名为 helloworld.c

1#include <stdio.h>
2
3int main(void)
4{
5    printf("Hello World");
6
7    return 0;
8}

现在按 Ctrl+S 保存文件。请注意,您刚刚添加的文件如何显示在 VS Code 侧边栏的文件资源管理器视图 (Ctrl+Shift+E) 中。您还可以通过选择文件 > 自动保存来启用自动保存 以自动保存文件更改。

4.3 运行应用

C/C++ 扩展使用您机器上安装的 C/C++ 编译器来构建程序。在尝试在 VS Code 中运行和调试 helloworld.c 之前,请确保已完成 “安装 MinGW-w64 工具链 “步骤。

  1. 打开 helloworld.c,使其成为活动文件。
  2. 从播放按钮旁边的下拉菜单中选择“Run C/C++ File”。

Pic_2024-08-17_233232.png

  1. 从系统检测到的编译器列表中选择 C/C++:gcc.exe 生成和调试活动文件。

Pic_2024-08-17_233331.png

只有在首次运行 helloworld.c 时,才会要求您选择编译器。该编译器将在 tasks.json 文件中设置为 “默认 “编译器。

构建成功后,程序的输出将显示在集成终端中。

4.3.1 了解 tasks.json

参考文档:Understanding tasks.json中文

首次运行程序时,C/C++ 扩展会创建一个 tasks.json 文件,您可以在项目的 .vscode 文件夹中找到该文件。tasks.json 会存储您的构建配置。

新的 tasks.json 文件应与下面的 JSON 文件类似:

 1{
 2    "tasks": [
 3        {
 4            "type": "cppbuild",
 5            "label": "C/C++: gcc.exe build active file",
 6            "command": "C:\\msys64\\ucrt64\\bin\\gcc.exe",
 7            "args": [
 8                "-fdiagnostics-color=always",
 9                "-g",
10                "${file}",
11                "-o",
12                "${fileDirname}\\${fileBasenameNoExtension}.exe"
13            ],
14            "options": {
15                "cwd": "${fileDirname}"
16            },
17            "problemMatcher": [
18                "$gcc"
19            ],
20            "group": {
21                "kind": "build",
22                "isDefault": true
23            },
24            "detail": "Task generated by Debugger."
25        }
26    ],
27    "version": "2.0.0"
28}

4.3.2 修改 tasks.json

您可以修改 tasks.json,使用"${workspaceFolder}/*.cpp “而不是"${file}"这样的参数来编译多个 C 文件,这将编译当前文件夹中的所有 .c 文件。

您还可以修改输出文件名,将"${fileDirname}\${fileBasenameNoExtension}.exe"替换为硬编码文件名(例如"${workspaceFolder}\myProgram.exe")。

V. Debug C/C++

5.1 源码文件

 1#include <stdio.h>
 2
 3int main(void)
 4{
 5    int num1, num2, sum;
 6
 7    printf("Enter the first number: ");
 8    scanf("%d", &num1);
 9
10    printf("Enter the second number: ");
11    scanf("%d", &num2);
12
13    sum = num1 + num2;
14
15    printf("The sum of %d and %d is %d\n", num1, num2, sum);
16
17    return 0;
18}

5.2 调试 sum.c

  1. 打开 sum.c ,使其成为活动文件。
  2. 点击编辑器边框或使用 F9 在当前行上设置断点。

Pic_2024-08-17_233342.png

  1. 从播放按钮旁边的下拉菜单中选择“Debug C/C++ File“。

Pic_2024-08-17_233353.png

  1. 从系统检测到的编译器列表中选择:C/C++:gcc.exe 编译和调试活动文件(只有在首次运行或调试 sum.c 时才会要求您选择编译器)。

Pic_2024-08-17_233431.png

播放按钮有两种模式:“Run C/C++ File”和“Debug C/C++ File”。它将默认为上次使用的模式。如果在播放按钮中看到 Debug 图标,则可以直接选择播放按钮进行调试,而无需使用下拉菜单。

5.3 自定义调试

使用播放按钮或 F5 调试时,C++ 扩展会即时创建动态调试配置。 在某些情况下,你会希望自定义调试配置,例如指定运行时传递给程序的参数。您可以在 launch.json 文件中定义自定义调试配置。 要创建 launch.json,请从播放按钮下拉菜单中选择添加调试配置。

Pic_2024-08-17_233531.png

然后你会看到一个下拉菜单,其中有各种预定义的调试配置。选择:C/C++:gcc.exe 生成并调试活动文件。

Pic_2024-08-17_233431.png

VS 代码会在 .vscode 文件夹中创建一个 launch.json 文件,看起来像这样:

 1{
 2  "configurations": [
 3    {
 4      "name": "C/C++: gcc.exe build and debug active file",
 5      "type": "cppdbg",
 6      "request": "launch",
 7      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
 8      "args": [],
 9      "stopAtEntry": true,
10      "cwd": "${fileDirname}",
11      "environment": [],
12      "externalConsole": false,
13      "MIMode": "gdb",
14      "miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",
15      "setupCommands": [
16        {
17          "description": "Enable pretty-printing for gdb",
18          "text": "-enable-pretty-printing",
19          "ignoreFailures": true
20        },
21        {
22          "description": "Set Disassembly Flavor to Intel",
23          "text": "-gdb-set disassembly-flavor intel",
24          "ignoreFailures": true
25        }
26      ],
27      "preLaunchTask": "C/C++: gcc.exe build active file"
28    }
29  ],
30  "version": "2.0.0"
31}

stopAtEntry 值改为 true,以便调试器在开始调试时停止在主方法上。

💡 Tips
从现在起,在启动程序进行调试时,播放按钮和 F5 将读取 launch.json 文件。

VI. 参考文档

官方文档:C/C++ for Visual Studio Code

参考视频:YouTube