c++如何让程序异常以后继续执行_Visual Studio Code 如何编写运行 C、C++ 程序?

发布于:2021-10-26 16:56:03

0. 前言


本文面向初学者,每一步都比较详细。阅读本文能学*一些命令行、程序编译和调试,以及使用VS Code的知识。如果嫌本文说的麻烦,我给个精简版的:装gcc和c/c++扩展,打开文件夹,点开源代码,F1,build and debug active file,完。


本文许多内容都可从VS Code官方文档:C++ programming with Visual Studio Code 以及各个扩展的文档中获得,并且他们还会进行更新(本文也进行过几次重大更新),如果你想更深入了解,可以去看。本文也基本上是由多次尝试得出来的,如果有错误可以指出。


最终效果:实时显示编译阶段的错误、代码片段、补全、格式化、单文件的编译与调试。


1. 环境的准备

VSC的官网、下载、安装,我就不多说了。VSC只是一个纯文本编辑器(editor),不是IDE(集成开发环境),不含编译器(compiler)和许多其它功能,所以编译器要自己装好。


下载编译器:MinGW-w64 - for 32 and 64 bit Windows 往下稍微翻一下,选最新版本中的x86_64-posix-seh。最好不要用 Download Latest Version,这个是在线安装包,可能因为国内的“网络环境”下载失败。如果浏览器下载失败就换迅雷下或者连手机开的热点下,还失败,那就使用能访问Google的那种方法下。


“安装”编译器:下下来的是一个7z的压缩包。如果你不会解压可以百度“压缩包怎么解压”。解压完了放到一个不容易被删的地方,层叠的可以去掉一些。看好bin文件夹的完整路径,我图里的是C:mingw64in,把它加到环境变量中的PATH里去。如果你不会这一步,看本文最后面的“B. 如何添加环境变量”(可以在本页用Ctrl+F搜索)


Debian系Linux用sudo apt update; sudo apt install build-essential即可。








顺序不重要;路径可以不一样,反正保证gcc.exe在那个文件夹里就行


验证

按Win+R,运行cmd(不要跳这一步),输入gcc,应该会提示 no input files 而不是“不是内部命令或外部命令”或者“无法将 "gcc" 项识别为 cmdlet、函数、脚本文件或可运行程序的名称”。如果是“不是内部命令或外部命令”,说明gcc在的文件夹没有在环境变量的Path中,要加进去才行。如果加了还是这样,*簟H绻*袅嘶共恍校蔷褪悄阕约航械牟僮饔形侍狻


gcc -v可以显示出gcc的版本。如果显示出来的版本与你刚下的不同/更老,说明Path里原本有*姹镜谋嘁肫鳎赡苁前沧捌渌麵DE时装上的。则需要去掉Path里原来的那一个gcc的路径。


这两项验证一定要符合,否则必须修改环境变量。小心别错删了。





现在不用管clang,必定出错。clang的教程移到本文后面去了





输入gcc -v的最后一行输出。版本要和你自己下的对应,例如64位要有x86_64和seh


安装扩展(extension)

C/C++:又名 cpptools,提供Debug和Format功能

Code Runner:右键即可编译运行单文件,很方便;但无法Dubug


其他可选扩展:


Bracket Pair Colorizer 2:彩虹花括号

One Dark Pro:大概是VS Code安装量最高的主题


不建议/不需要装的扩展:


GBKtoUTF8:把GBK编码的文档转换成UTF8编码的。此扩展很久没有更新了,可能有严重的bug

C++ Intellisense:用的是gtags,本文第一个版本的选择。效果非常非常一般

Include Autocomplete:提供头文件名字的补全,现在cpptools和vscode-clangd都已经自带这个功能了,所以不用装

C/C++ Snippets:Snippets即重用代码块,效果自己百度;这个扩展安装量虽高,不过个人感觉用处实在不大,cpptools和clangd也自带一些;你也可以选择其他的Snippets扩展甚至自己定义


补充知识


编译器是把源代码变成可执行文件的,编辑器是你打字的软件。记事本就是一个编辑器,VSC也是编辑器。编辑器是无法编译运行程序的,因为那是编译器的工作

MinGW是gcc在Windows下的移植,gcc是世界上最流行的C/C++编译器组合。但gcc这个名字也指编译C语言的那个程序,g++才是C++编译器。即gcc程序和g++程序包含在gcc套件以及MinGW里,当只说gcc时要根据语境自己区分

其实MinGW和MinGW-w64只是名字像,它们是两个不同的项目。为了方便,本文中的MinGW指的其实都是MinGW-w64。MinGW本身已经很久没有更新了,不使用它哎呀,原来MinGW是活着的,但它只能产生32位程序

扩展是extension,插件是plugin,VSC用的是前者这种称呼。大部分文章都是混用两者的,不严谨但是能理解就行,要学会抓主要矛盾。当然本文用的都是正确的

可选阅读:[原创][科普]MinGW vs MinGW-W64及其它、What is difference between sjlj vs dwarf vs seh?


2. 配置几个.json文件

创建一个你打算存放代码的文件夹,称作工作区文件夹;路径不能含有中文和引号,最好不要有空格,我用的是C:VS-Code-C。C和C++需要分别建立不同的文件夹,除非用虚拟工作区。不要选上一段建出来的文件夹,源代码和编译器要分开放。


打开VSC,选打开文件夹;最好不要选“添加工作区文件夹”,这个就是虚拟工作区,我没用过,不保证没问题。点新建文件夹,名称为.vscode。不在资源管理里新建的原因是Windows的Explorer不允许创建的文件夹第一个字符是点(1903后才支持)。然后创建 launch.json,tasks.json,settings.json(不是setting.json) 放到.vscode文件夹下。效果图:





一定要在.vscode里,别变成*行的了


这几个文件的内容见下。复制以下代码出来后,知乎会自动在前面加上几行保留所有权利的字,实际使用的时候肯定要删了的。有些地方可选修改,自己对照着注释看吧。注意:如果是写C++,tasks.json的一个地方必须要修改。


launch.json代码

externalConsole可根据自己喜好修改;cwd可以是程序运行时的相对路径,如有需要可以改为${fileDirname}(感谢


@xhx


)。lldb我没用过就不多说了。type和request不变色是正常现象。


// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
// 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
。此命令无需管理员权限,且不会随着终端退出而退出(就是和上面图形化的效果一样)。


如果还不知道怎么修改,可以自己百度或者b站搜“环境变量”看视频。大多不是C的但是区别不大,小心别错删了就是。








相关资源:Visual Studio Code (vscode) 配置CC++环境/编写运行CC++的教程详解(Windows)【真正的小白版】

相关推荐

最新更新

猜你喜欢