广大使用C++编程的OIer:
你还在用UI丑陋、调试难受、连代码补全都没有的Dev cpp刷题?
快来尝试一下号称“宇宙最强编辑器”的VSCode!
颜值珂爱的外表,成百上千的多样主题!强大的代码补全!便捷的运行方式!
不多废话,开整!
本文的所有操作和配置在64位Windows 10系统下进行,在其他系统下的操作和配置可能略有出入。
打开浏览器前往VSCode官网:
点击Download for Windows按钮下载VSCode安装包。
然后一路next下去,安装完成!
最好不要安装在C盘
参照我的另一篇文章《优化VSCode:让你的VSCode变得好用又美观》对你的VScode进行优化。
如何打开setting.json?
快捷键F1或Ctrl+Shift+P调出 命令面板, 然后输入 Open Settings (JSON)。
即可打开settings.json
编辑完毕记得保存哦!
由于MinGW官网在国外,下载极慢且最近疑似遭到污染,所以我准备了下载好的MinGW压缩包放在BaiDu网盘(提取码:5cy2
),可能不是最新版,但对于OI来说够用了。
下载压缩包后,将压缩包解压至磁盘上你喜欢的路径,重命名文件夹为你喜欢的名字。(路径和名字不要含有任何空格、中文或其他非ASCII字符,路径越短越好,最好不要在C盘)
笔者这里将解压路径设为
D:\MinGW64
解压后目录应为类似如下结构:
D:
MinGW64
|- bin
|- bulid-info.txt
|- etc
|- include
|- lib
|- libexec
|- opt
|- share
|- x86_64-w64-mingw32
别急!现在还没有安装完能,还需要设置环境变量。
进入控制面板 -> 高级系统设置 -> 环境变量 -> 用户变量区域的“编辑” -> 新建
输入你的MinGW安装路径\bin
,一路确定,设置成功!
笔者这里设置的环境变量内容是
D:\MinGW64\bin
打开cmd,输入g++
若显示:
则代表成功安装。
必须安装以下插件才能愉快的刷题:
在磁盘中新建一个路径和名称中不含有任何空格、中文或其他非ASCII字符的文件夹(路径越短越好,最好不要在C盘),这个文件夹就是你以后做题时写代码、保存代码、运行代码的地方了,我们称之为家目录。
在家目录下新建文件夹,取名为.vscode
(注意是小写)。
在.vscode
文件夹下新建三个文件:
tasks.json
(用于配置构建任务)launch.json
(用于配置调试)c_cpp_properties.json
(用于配置c/cpp选项)将以下内容粘贴至对应的json文件中(记得补全汉字标识你的MinGW安装路径并去掉注释):
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg",
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "你的MinGW安装路径\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++ build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build",
"command": "你的MinGW安装路径\\bin\\g++.exe",
"args": [//编译参数列表
"${file}",
"-fexec-charset=GBK",
"-static-libgcc",
"-g",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
],
"problemMatcher": [
"$gcc"
]
}
]
}
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"__cdecl=__attribute__((__cdecl__))"
],
"cStandard": "c11",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64",
"browse": {
"path": [
"${workspaceFolder}"
]
}
}
],
"version": 4
}
至此,.vscode
文件夹的内容就配置完毕了。
可以有多个家目录。事实上,它们只是拥有
.vscode
文件夹的普通目录而已。配置好一个.vscode
文件夹后,可以将.vscode
文件夹保存起来备用。当部署其他的家目录时,可以把以前的.vscode
文件夹拷贝进去以免去再次配置的麻烦。换句话说,
拥有
.vscode
目录并正确配置了launch.json
、tasks.json
、c_cpp_properties.json
三个配置文件的目录就叫做家目录。家目录中以及其下无论多深的目录中,都可以正确地进行c/cpp的代码补全、编译运行和调试。
家目录下的目录名称中最好不含有任何空格、中文或其他非ASCII字符。
最好不要在
.vscode
文件夹中添加除了配置文件以外的东西。
在上述工作都顺利完成后,赶快在家目录下新建一个.cpp
文件吧!
如何新建文件:在侧边栏文件管理器中右键可唤出菜单,之后的操作几乎如同在windows资源管理器中一样。
在文件中写下你的代码。
写好代码后,你可以按如下几种方式运行你的代码:
return 0;
行处打断点来暂停程序。(很不优雅的方式)通过Ctrl+Alt+B唤出生成任务列表,选择C/C++: g++.exe生成活动文件
以做到只编译而不运行。
通过按下F5键来为你的代码启动调试。
或者点击侧边图标栏的:
然后点击:
也可以为你的代码启动调试。
尽管F5看起来和运行没什么区别,但是请不要使用调试代替运行,即不要使用F5代替Ctrl+F5。
调试界面介绍:
来尝试一下用VSCode调试代码吧!
还记得《优化VSCode:让你的VSCode变得好用又美观》中提到的Code Runner插件吗?
现在它可以帮助我们快捷地运行我们的cpp代码!
首先,按Ctrl+F5键的运行方式本质其实也是调试,只是减少了启动的调试服务,但是仍有一部分调试服务被启动,启动速度慢。
而使用Code Runner本质是在控制台输入命令,和最原始的手动敲命令编译运行有异曲同工之妙,轻量级,启动速度快。
其次,按Ctrl+F5键的运行方式会在编译时加入-g
参数,加入了这个参数生成的可执行文件保留了调试所需的代码信息,而我们使用Code Runner的初衷是运行而不是调试,多余的代码信息只会降低编译速度和运行速度。
还有一点,按Ctrl+F5键的运行方式需要靠打断点的方式在程序结束前暂停程序,并且是在弹出的黑窗口运行,脱离了VSCode,很不方便也很不优雅。
而使用Code Runner可以通过ConsolePauser.exe实现自动暂停代码同时显示代码运行耗时(就像Dev cpp一样),不靠打断点。并且能在VSCode的内置终端里运行,始终不脱离VSCode,没有黑窗口,更方便。
所以,个人认为使用Code Runner比按Ctrl+F5键好。
首先按照《优化VSCode:让你的VSCode变得好用又美观》配置Code Runner插件。
然后在"code-runner.executorMap"
设置项的大括号中加入如下内容(注意补全汉字标识ConsolePauser.exe的路径):
"cpp": " cls && cd /d $dir && g++ \"$fileName\" -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" -static-libgcc -std=c++11 && ConsolePauser.exe的路径\\ConsolePauser.exe $fileNameWithoutExt",
"c": " cls && cd /d $dir && gcc \"$fileName\" -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" -static-libgcc -std=c11 && ConsolePauser.exe的路径\\ConsolePauser.exe $fileNameWithoutExt"
你可能会问ConsolePauser.exe的路径是什么东西?
别急,我们慢慢分析。
首先,Code Runner似乎没有自动暂停并显示代码运行耗时的功能,如何才能在Code Runner中实现Dev cpp中自动暂停并显示代码运行耗时的功能(毕竟这个功能对OIer来说很重要)呢?
经过一番的苦思冥想,终于找到了解决方案:借!
借?向谁借?
向Dev cpp借!
在Dev cpp安装目录下发现了这么一个文件:
它在命令行参数中接收一个程序路径,运行程序后自动暂停并显示代码运行耗时。
就像这样:
我们可以单独将这个文件提取出来,借助它实现我们想实现的功能。
这边已经将其提取出来了,放在BaiDu网盘(提取码:x124
)中,大家可以自己下载。
下载完了之后,将其安置在磁盘中你喜欢的位置(路径和名称中不含有任何空格、中文或其他非ASCII字符,路径越短越好,最好不要在C盘)
这个路径就是上面提到的所需填写的ConsolePauser.exe的路径。
一切配置完成后,让我们写一个程序,并用Code Runner运行一下吧:
提示:通过Ctrl+Alt+N快捷键可以代替按下绿色小三角的方式运行。
s/1WrOWo9HF7SNSrJyI-1RxVg)(提取码:x124
)中,大家可以自己下载。
下载完了之后,将其安置在磁盘中你喜欢的位置(路径和名称中不含有任何空格、中文或其他非ASCII字符,路径越短越好,最好不要在C盘)
这个路径就是上面提到的所需填写的ConsolePauser.exe的路径。
一切配置完成后,让我们写一个程序,并用Code Runner运行一下吧:
提示:通过Ctrl+Alt+N快捷键可以代替按下绿色小三角的方式运行。