大一新生如何在VSCode中编写C语言
想当年楼主大一的时候,为了在VSCode中编译c语言花了好几个晚上的时间去研究,当时不懂什么是编译器什么是编辑器,为什么同样是写代码的东西,DevC++就可以直接运行写好的代码而VSCode却不行。现在把知识分享出来,希望能帮到新来的学弟学妹们。
简单来说,编辑器就是类似word这种对文本进行编辑的软件,它的功能就是编辑文字(对程序员来说就是编辑代码),而一段已经编辑好的代码想要运行起来,就需要让编译器将代码编译成电脑能够识别的东西。
DevC++可以直接运行代码,是因为它内置了名叫GCC的编译器,并且所有的配置(怎么调用编译器、怎么生成编译好的程序、编译过程要链接的文件等)都是帮你写好的(DevC++的使命本就是开发c语言程序)。
而VSCode的本质是编辑器,虽然基于丰富的扩展功能可以实现编写几乎所有的代码,但是那些扩展的用途只是给你提供编写代码过程中的代码补齐、报错等功能,想要通过编译这一步还需要你自己去网上下载编译器并在VSCode中进行配置。(你可能注意到上面说的DevC++自带编译器,那么我们也可以跳过下载编译器这一步而直接配置VSCode让它使用DevC++里的编译器,但是由于DevC++年久不更新,它自带的编译器版本也很老了,不建议使用)
在Windows系统下,可以使用的好用的c编译器不多,Windows系统专属有专属的编译器叫MSVC,这个编译器在Windows上的编译速度可以说是瞬间编译完成,但是这个编译器只能在Visual Studio中使用,想在VSCode中完美的配置好比较困难,所以这里使用从GNU系统移植过来的GCC编译器。
一、下载安装VSCode
VSCode在官网就可以免费下载,并且下载速度不差。
VSCode官网:https://code.visualstudio.com/
⬆点击左侧的Download for Windows即可下载。
⬆在这一步建议将所有选项都选上。
完成安装后,在左侧扩展栏中安装三个插件,第一个是Chinese (Simplified) (简体中文) Language Pack for Visual Studio(中文补丁),第二个是C/C++(帮助配置编译环境),第三个是C/C++ Extension Pack(提供代码补齐)。
重启VSCode后你的界面就变成中文了。
二、下载GCC编译器(MinGW-w64项目)
打开MinGW-w64项目的GItHub仓库:https://github.com/niXman/mingw-builds-binaries/releases
选择x86 64-xxx-release-win32-seh-msvcrt xxx.7z下载。
打不开网站的朋友,可以使用Watt ToolKit进行加速。也可以使用我下好的版本:
链接:https://pan.quark.cn/s/9fee13e652a6
提取码:SbHe
将下载好的文件解压,得到一个mingw64文件夹,这就是编译器文件夹了,然后把这个文件夹移动到一个确保你不会乱动到的地方,这里推荐C:\Windows
三、配置编译环境
在任务栏搜索高级系统设置并打开。
点击环境变量(跟配置Java的那一套一样)
选择系统变量中的Path,然后点编辑。
新建,输入编译器文件夹中bin文件夹的地址(以第二步的地址为例):C:\Windows\mingw64\bin
然后一路点确定关掉所有窗口。
最后查看是否配置成功:
按键盘上的Win+R打开运行窗口,输入cmd并运行。
输入gcc -v并回车,最后一行显示gcc编译器版本说明配置成功。
四、配置VSCode(基础)
打开你的VSCode,在左侧栏的资源管理器中选择打开文件夹,找个地方新建一个空的文件夹作为你专门存放代码文件的地方(如果你的电脑用户名是中文的话,这个文件夹不能在桌面上,这个后面再说)。这里给这个空的文件夹命名为“Code”。
选择好后会弹出一个窗口,选择是即可。
接下来先写一段小代码,这里写个hello world
选择新建文件,输入文件名,记得带后缀 .c
输入代码
然后按键盘上的F5运行(如果你的F5按了没用,就按Fn+F5),选择C++(GDB/LLDB),然后选自动检测到的任务(看到gcc.exe就是了)。
然后静静的等待一段时间,让他自动生成编译用的的配置文件,最后看到下方的终端打印成功就好了。
然后你会看到左侧的文件夹里面多出来一些东西:
其中.vscode文件夹里的就是自动生成的配置文件了;下面的hello.exe是编译好的可执行程序。
接下来我们打开这个tasks.json文件来了解一下里面的内容
其余内容不用关注,我们只用来看"args"中的内容就行。这里五行代码的意思是:
1.开启色彩显示;
2.编译;
3.要编译的文件叫什么名字,${file}的意思是你当前正在编辑的这个文件;
4.链接;
5.链接后的文件应该叫什么,这里的意思是在代码所在的这个文件夹下和代码文件名字一样的exe文件。
如果你需要添加一些其他的配置,跟着加在这五行后面就可以了。
这里就要说一下之前为什么说用户名不能为中文了,实际上是你的代码所在的路径上不能有一个中文,右键刚刚写的代码文件选择在文件资源管理器中显示,就能看到地址栏上有没有中文了:
我们可以新建一个中文名称的代码文件来试试看:
运行,出现以下报错:
报错的意思是:名为"你好世界.exe"的文件不存在。但是我们能看到左侧的"你好世界.exe"已经生成好了,问题出在VSCode编译好文件后,打开可执行文件的那一步。
这时候我们可以转到文件资源管理器中手动打开这个生成好的exe文件,但是我们的目的是编辑-编译-运行一步到位,所以还是要来解决一下这个问题。
第一种方法:写代码时不要使用中文命名。
第二种方法:在上图选择“打开launch.json”让他生成一个launch.json文件,先不用管这个文件,我们把视角拉回tasks.json中:将上面说到的"${fileDirname}\$ {fileBasenameNoExtension}.exe"改为"${fileDirname}\test.exe"。让他生成的exe文件的名字固定为test.exe,就不会在运行的时候出现不存在的问题了。
(改完记得按Ctrl+S保存一下)
然后我们回到“你好世界.c”,按F5运行
可以看到左侧的"test.exe"成功生成,并且运行成功了。
另外,你的代码文件名中也不应该含有空格,那样的话在编译时会将空格前后的字段视为两条命令而报错。
五、配置VSCode(进阶)
-
如果你在for循环初始化中定义变量并赋值时出错,你可以按Shift+Ctrl+P,搜索C/C++:编辑配置(UI),找到C标准并把它改为C99或C11:
-
如果你想在cmd中运行你的程序而不是在VSCode里的终端中,你可以打开launch.json,选择右下角的添加配置,选择C/C++:(gdb)启动,修改以下几行:
“program”:是你在tasks.json中设置的编译后生成的exe文件的名字;
“cwd”:是gcc编译器所在位置;
“externalConsole”:ture表示在系统终端(也就是cmd)中运行;
“miDebuggerPath”:是gdb.exe的路径,和gcc在同一个文件夹里的。
保存后再运行你的代码,会发现cmd窗口一闪而过,这是因为程序输出完文字后就直接退出了,我们需要在代码后面加上一行 system(“pause”); 来使程序暂停(如果还是一闪而过的话,就重启一下VSCode):
- 如果你在运行时发现中文部分变成了乱码:
你可以到tasks.json中,在args部分添加一行配置(就像在第四点说的那样):“-fexec-charset=GBK”,让编译器使用gbk编码(记得保存)。
到这里就差不多可以满足日常学习敲代码的要求了,希望可以帮助到各位。