在VS Code中优雅地配置C/C++环境
对于第一次接触编程的同学,在 VS Code 中配置 C 语言环境一直不是一个简单的问题——不过我们现在倒是有 ChatGPT 等更好的解决方案了。尽管如此,笔者仍决定在这里写一个简要的配置教程,帮助各位新手同学完成伟大的第一步。需要注意的是,本文主要针对 Windows 环境。macOS 用户不需要安装下文的 Dev-C++ 或配置 MinGW,可以在终端运行
xcode-select --install安装 Xcode Command Line Tools,并使用其中的Apple Clang即可。
安装GCC
我们需要先区分编辑器(或 IDE)与工具链:VS Code 和 Dev-C++ 负责代码编辑及调用相关工具,GCC 工具链负责编译、汇编和链接(即将我们写的代码翻译成电脑看得懂的二进制的过程);编译得到的可执行文件最终由操作系统加载并运行。由于很多第一次接触 C 语言的同学会在老师的要求下选择 Dev-C++,因此本文选择安装 Dev-C++,并借用其中的 MinGW-w64/TDM-GCC 工具链(这是一个提供了Windows版本的GCC的工具集)进行 VS Code 的环境配置。
安装 Dev-C++ 只需要按照安装向导操作即可。值得注意的是,Dev-C++ 安装过程没有中文选项,所以我们可以先选择英文或其他任何一种你认识的语言,并在安装完成后第一次启动时再选择中文。另外,我们需要记住安装路径,这在一会儿需要用到。
配置环境变量
打开文件资源管理器,进入刚才记住的安装路径,找到 MinGW64,复制其中 bin 文件夹的绝对路径(例如,我的路径为 C:\Program Files (x86)\Dev-Cpp\MinGW64\bin)。随后进入“设置 → 系统 → 关于 → 高级系统设置 → 环境变量”,在系统变量中找到 Path,单击“编辑”,在新窗口中点击“新建”,把刚刚复制的路径粘贴进去(不要添加引号)。之后打开一个新的终端窗口(已经打开的终端需要先关闭再重新打开),依次输入 gcc --version 和 gdb --version。如果两个命令都能显示版本信息,说明编译器和调试器已经加入 PATH。
配置VS Code
需要注意的是,如果你在配置GCC前已经安装并打开了VS Code,你需要关闭并重新打开。
如果你使用的是 macOS,安装 Xcode Command Line Tools 后可以直接来到这里。
点击下载并安装 VS Code 后,在扩展中搜索并安装 Chinese (Simplified) Language Pack,随后重启 VS Code 以获得简体中文支持。
随后在扩展中搜索并安装 C/C++ Runner。该扩展会自动安装所有你需要安装的其他扩展,并进行自动配置。安装后重启 VS Code,并点击该扩展的设置图标->设置,找到 C_Cpp_Runner: Warnings,删除其中的 -Wnull-dereference。(该警告选项从 GCC 6 才开始提供,而前文所附的 GCC 4.9.2 不支持它。如果你自行安装了较新的 GCC,则无须删除,也可以在了解这些选项的含义后按需更改。)
第一个程序
至此,我们可以开始愉快地写代码了。我们可以在一个地方(比如 D 盘的某个位置)新建一个文件夹,用来存放学习时写的 C 语言代码。为避免部分工具对路径处理不完善,建议路径中不要包含空格、中文和特殊字符。用 VS Code 打开文件夹并让 C/C++ Runner 完成首次配置后,工作区内会生成一个 .vscode 文件夹,里面是一些配置文件。我们可以检查其中 settings.json 文件内 C_Cpp_Runner.warnings 的内容,看一看前文所说的 -Wnull-dereference 是否已经删除;如果没有,可以手动删除。
在此之后,我们可以在文件夹内创建一个 hello.c 文件,并在其中写入第一个 C 语言程序。
#include <stdio.h>
int main(void) {
printf("Hello World!\n");
return 0;
}随后按 Ctrl+Alt+B 进行构建,并按 Ctrl+Alt+R 运行,这样在 VS Code 下方的终端窗口中就可以看到程序输出的 Hello World!。至此,我们的全部工作就大功告成了!
需要记住的是,写好程序后,需要按 Ctrl+Alt+B 进行构建,并按 Ctrl+Alt+R 运行。后续需要调试时,在对应行的行号位置点击(即打断点)后,按 Ctrl+Alt+D 进行调试。这三个都是 C/C++ Runner 提供的默认快捷键,我们也可以在“键盘快捷方式”中进行更改。构建产生的中间文件(*.o)和可执行文件(outDebug.exe)默认会放在 build/Debug目录中;我们每次运行实际就是在运行该exe文件。
最后
为什么选择使用 VS Code 而不是这套旧版 Dev-C++ 呢?Dev-C++已经停止维护多年,在现代代码分析、智能补全、扩展生态和大型项目的构建管理方面也不够方便;VS Code 则可以通过扩展支持多种语言,还能使用 SSH 连接远程环境、连接Docker容器,以及使用 Agent 功能(当然这在我们的考试中是不被允许的)。当然,对于新手来说,我认为还有一个很重要的点是:VS Code 颜值更高,可玩性更大(嘿嘿)。我一定要在这里推荐一下 JetBrains Mono 字体,至于主题、配色,甚至更多的美化或者扩展插件,就让各位凭着自己的审美慢慢折腾吧~