2023年5月7日附:

本教程年代久远,加之当时写的也不是很好,亟待更新

但是鄙人最近没有空,简单地录了个视频,建议配套食用

然后扩展有些已经被官方吞了,再加一个好用的扩展,叫 Error Lens,非常好用


Step0:准备安装文件

安装文件包含 VScode 的安装包和著名 C/C++ 编译器 MinGW
你可以选择去官网下,也可以选择通过下面的链接下载

百度云:https://pan.baidu.com/s/1T_j30OCeFneNF5NnxWVOig
提取码:11hx

蓝奏云:https://wwd.lanzouf.com/b030s49yj
密码:8wqk

解压完成后就准备开始了

Step1:安装软件

对于 MinGW 来说,随便放在一个你喜欢的地方
但是请记住它的位置,这里以 C 的根目录为例

对于 VScode ,安装程序一直点下去

Step2:配置运行环境

安装后打开 VScode,需要先装上几个插件,在左侧转到扩展页面,然后按名字搜索

有三个必要的插件,和两个可选的插件

第一个是中文插件,用于显示中文界面

安装后,会提示重启 VScode ,点按钮可以重启

第二个是 C/C++,我们需要用它来运行和调试程序

第三个是 Code Runner,通过这个插件来启动程序更加快捷

下面两个是我比较推荐的,Bracket Pair Colorizer 2 可以给代码中的括号自动配色,突出代码结构

最后一个 Local History 可以保存每次修改的版本,随时回溯历史

下面需要创建一个文件夹保存源代码,我就直接创在桌面了,取名为 C Study

在 VScode 的菜单栏中选择 文件->打开文件夹,在 VScode 中打开


在写代码之前,我们还需要设置一下扩展

切换到扩展页面,选中 C/C++ ,点击扩展设置

输入一个空格,再输入 path ,搜索所有有关路径的设置

我们要设置编译器路径和包含路径,一直往下翻,翻到 Compiler Path 和 Include Path

键入之前你保存 MinGW 的路径,再加上 \bin\gcc.exe

对于下面的 Include Path,添加 MinGW 路径,再加上 \lib,别忘了确定

现在可以切回文件页面,新建一个 helloworld.c 文件(如果想写C++的话就是 .cpp)
在右侧就可以开始写了,可以看见代码补全功能已启用,按 Tab 或 Enter 可以自动补全,方向键可以用来选择

给点时间,让我来写个Hello World

写完了,下面讲如何运行

从左侧切换到 运行和调试 页面,点击运行和调试,或者点击工具栏 运行->以非调试模式运行

第一次运行需要配置环境到 .vscode 文件夹中,按图中的方式选择

如果中途出现了问题,就删除 .vscode 文件夹重新尝试

根据选择在 .vscode 文件夹中自动创建了 launch.json 配置文件,我们不需要再进行修改,直接关掉

查看下方的终端,可以看见程序已正常运行,字符串已成功打印


如果你遇到了无法解决的麻烦...

如果你在此步遇到了麻烦,无法运行,可以尝试使用我的配置文件

image-20220620182710544

点击右上角的按钮,打开 JSON 文档,全部删除,覆盖为我的配置

(如果你的路径跟我的不一样请手动更改)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{
"C_Cpp.default.cppStandard": "c++14",
"explorer.confirmDelete": false,
"C_Cpp.default.compilerPath": "C:\\mingw64\\bin\\gcc.exe",
"C_Cpp.default.includePath": [
"C:\\mingw64\\lib"
],
"files.associations": {
"*.c": "c"
},
"[c]": {
"editor.defaultFormatter": "ms-vscode.cpptools"
},
"code-runner.clearPreviousOutput": true,
"code-runner.runInTerminal": true,
"debug.onTaskErrors": "showErrors",
"terminal.integrated.detectLocale": "off",
"files.autoGuessEncoding": true,
"security.workspace.trust.untrustedFiles": "open",
"explorer.confirmDragAndDrop": false,
"typescript.locale": "zh-CN",
"C_Cpp.default.cStandard": "c99",
"settingsSync.ignoredSettings": [
"-C_Cpp.default.compileCommands",
"-C_Cpp.default.includePath"
],
"code-runner.saveAllFilesBeforeRun": true,
"code-runner.saveFileBeforeRun": true,
"[cpp]": {
"editor.defaultFormatter": "ms-vscode.cpptools"
},
"files.exclude": {
"**/.history": true,
"**/.vscode": true,
"**/*.exe": true
},
"workbench.editor.enablePreview": false,
"bracket-pair-colorizer-2.depreciation-notice": false,
"go.autocompleteUnimportedPackages": true,
"editor.linkedEditing": true,
"editor.unicodeHighlight.nonBasicASCII": false,
"git.enableSmartCommit": true,
"go.toolsManagement.autoUpdate": true,
"editor.inlineSuggest.enabled": true,
"github.copilot.enable": {
"*": true,
"yaml": true,
"plaintext": false,
"markdown": false
},
"diffEditor.ignoreTrimWhitespace": false,
"cmake.configureOnOpen": true

}

接下来尝试通过 Code Runner 来运行,找到右上角有个三角形的运行按钮

鼠标放在上面,可以看见也能用快捷键 Ctrl+Alt+N 来运行

尝试运行但报错,发现还要去配置环境变量

打开 设置->系统->关于 点击高级系统设置

点击下面的环境变量

上面的是用户的,下面的是系统的,两个都设置,这里以上面的用户示例

找到 Path ,点击编辑

点击 新建 ,输入编译器所在的文件夹,再点击下方的按钮保存

(别忘了系统那里也操作一遍)

值得注意的是,通过 Code Runner 运行时不能选中任何字符,不然 Code Runner 就会新建一个临时文件把选中的部分抽离出来运行,这对于某些语言还是挺有用的,但 C/C++ 自然是需要一整个程序运行

Step3:做一些优化

重启 VScode 现在可以运行了,运行速度明显更快,所以一般都使用这个方法运行

在左下方的 LOCAL HISTORY 处可以查看历史的版本,点击即可浏览

但我们也看见文件视图里有一些我们不需要的文件夹和文件,比如 .history(用于保存之前的版本)和 .vscode(保存配置文件),而我还觉得,如果去掉那些 exe 文件界面就更清爽了

打开 文件->首选项->设置,或者按快捷键 Ctrl+, 也行

在设置中往下翻一点,找到 Files:Exclude

添加几个屏蔽模式,这样我们就可以只看见源代码了

现在,我来讲解一下怎么调试程序

调试其实就是在运行时查看程序运行的细节(例如看变量的值),来修BUG

给点时间,让我写一个计算加法的程序

写完建议右键格式化一下,更工整美观

在行号的左侧单击一下以添加断点,程序运行到断点处就会停下,等待你点击下一步

在工具栏点击 运行->启用调试,或者直接 F5

再在左侧的监视中添加你想看的变量或表达式

在下方切回终端,输入两个数,再回车

可以看见程序停在了断点处,左侧可以看见变量的值,变量栏中可以看见局部变量,如果是全局变量则必须在监视中手动添加

在上方点击单步调试,可以一步一步运行,直到程序结束

单步调试和单步跳过的区别是:在遇到自己写的函数时,单步调试会跟着跳过去,而单步跳过会跳到函数执行完毕的状态

Step4:推荐一个我喜欢的窗口布局

首先在左侧的文件那里创一个 TestSpace 的文件夹,在其中创建 test.c、input.txt、output.txt

之后所有的写代码的操作都在 TestSpace 中进行,其他位置只用来储存

把 input.txt 标签页拖到右边独立出来

再把 output.txt 拖到右下角

然后我们开始在 test.c 中写代码,这里把上面的加法程序复制进来

写完之后,在 main 函数的开头添加下面两行

1
2
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);

这两行的作用是把标准输入重定向为 input.txt,把标准输出定向为 output.txt

现在,在 input.txt 中写上需要输入的内容,按 Ctrl+S 保存,回到 test.c ,按 Ctrl+Alt+N 执行,可以看见输出的内容已经出现在 output.txt

只需修改 input.txt 的内容,再执行,就能获得新的结果

这有什么好处呢?这样可以分离输入和输出信息,而不是有时在缓冲区搅在一起

在需要测试多组样例时,这也更为方便,只需重复 修改->保存->运行

在修 bug 时可以省去重复输入同一组样例的时间

在需要提交代码时,选中 freopen 那两行,按下 Ctrl+/ 来开关注释,之后 Ctrl+A 全选 Ctrl+C 复制提交即可

值得注意的是,不知道为什么在调试的时候貌似不能正常输出至 output.txt,这时只能注释掉那一行,在终端中查看结果