vscode的安装,及使用vscode运行c程序

vscode是什么?

百度上有更详细的介绍,这里就做个大概总结。

vscode是跨平台、免费开源的代码编辑器。在macOS、windows和Linux都能用。

vscode支持几乎所有代码语言的语法高亮、代码补全、自定义快捷键。

vscode是一款编辑器,提供丰富的插件。

所有平台都会提供两个版本:稳定版和体验版。

在官网vscode.com找到的下载页面有稳定版stable和体验版insiders的标记。建议下载稳定版,体验版每周都会更新,可能会产生bug,虽然可以提前体验最前沿的功能。

vscode怎么下载安装?

点击这里下载vscode

也可以在浏览器搜vscode,找到vscode官网。

网站会更新,可能需要点一堆网页的元素才能完成下载。所以写的操作步骤具有时效性。

写这篇笔记的时间是2024年10月23日的情况,不知道多久后页面会发生改变。

点击Download for windows后会自动下载。

下载完vscode安装包后放到指定路径,之后双击安装包。之后就是经典的安装流程。我用的安装包版本是VSCodeUserSetup-x64-1.74.1,下图的安装流程也是这个版本的。

修改数据的路径到D盘。

复选框全打勾。

这个不知道是啥,我直接点下一步。
请添加图片描述

点击安装即可。
请添加图片描述

vscode的基础页面:
请添加图片描述
vscode默认是英文版本,应该有中文插件。

找到插件栏,搜索chinese,即可找到简体中文的插件。它能将vscode进行汉化。安装语言包后会提示重启vscode。
请添加图片描述
vscode最左边还可以安装各种扩展包。
在这里插入图片描述

vscode配置c/c++开发环境

vscode只能用来编辑代码,要想运行c++,此时需要编译器。

MinGW-w64,windows平台的gcc移植版本。

点击下载MinGW-w64最新版。

请添加图片描述
下载的压缩包解压,找到MinGW-w64,将它放在容易管理的路径。其中的bin目录下都是gcc等可执行工具。MinGW-w64不要放在中文路径下,可能会因为编码原因无法识别。

下载完成后还需要配置到自己想要的目录。

之后按windows+s打开搜索框,搜环境变量。将mingw64/bin这个路径添加进path环境变量。进行完这一步gcc、g++即可通过命令行的方式去使用。
请添加图片描述
例如, gcc --version,即可查看gcc版本。
请添加图片描述

之后在vscode中搜c/c++,即可找到c/c++的插件(一般是第一个)。安装后重启即可。
请添加图片描述

在vscode编辑、运行c代码

用vscode写代码应该管理到指定文件。

文件夹可以指定日期。但名字不能(尽量不用)有空格和特殊字符。

在vscode中打开文件夹,选择指定文件夹打开。vscode会将文件名称大写。

没打开过则需要勾选信任。
请添加图片描述

vscode设置c/c++的编译选项

鼠标选中.c文件的内部,按Ctrl+Shift+p(或依次点击 帮助 → \rightarrow 显示所有命令)弹出界面,找到c/c++编辑配置(UI)(c/c++:Edit configurations (UI))
请添加图片描述
请添加图片描述

点击编辑配置(UI)后,会在资源管理器处生成目录.vscode,里面会发现有一个c_cpp_properties.json的文件,编辑配置其实是编辑这个文件。首先配置编译器路径,虽然有时默认是vs2019的MSVC(即cl.exe,因为自己的电脑有装vs2019),但可以改成minGW64。编译运行c语言用gcc.exe,c++则用g++.exe。
请添加图片描述

IntelliSense模式即c/c++代码智能报错,若选了minGW64,则要选gcc-x64(legacy),当设置好后资源管理器生成.vscode文件夹。其中有个文件c_cpp_properties.json,里面指定了编译器的路径等信息。

请添加图片描述
做完这些,可以看到c_cpp_properties.json中的信息。
在这里插入图片描述

vscode生成tasks.json文件

tasks.json用于编译个执行构建任务。

首先选中main函数所在的c/c++文件,在终端中点击配置任务后第一次会弹出界面。

gcc.exe使代码更好地跨平台。选中之后会生成tasks.json的配置文件。
请添加图片描述
请添加图片描述
请添加图片描述

vscode编译和执行c

编译.c是依赖tasks.json进行。
想编译哪个文件,鼠标选中哪个文件。首先先配置任务生成文件tasks.json。这里已经配置过。
后点击终端找到运行生成任务
请添加图片描述
之后即可在终端窗口看到相关信息。c语言的话选择gcc.exe,c++选择g++.exe
请添加图片描述
配置生成任务的信息在tasks.json中有记录。后生成.exe文件:
请添加图片描述

若想执行生成的.exe可执行文件,鼠标选中.c文件的编辑页面,按ctrl+`(Esc键位下面的那个),即可弹出终端窗口。或者在终端中找到新建终端。

请添加图片描述
输入.\name.exe,回车即可执行.exe。若.exe不在根目录下而是子文件夹中,还要修改格式为:子文件夹名\name.exe

请添加图片描述
这个和命令行窗口(cmd)十分类似,尝试输入exit使它终止运行,可以用。

若还想写其他代码,就在原来的文件夹

就在当前的文件夹(Java编程称为包)里重新生成testc2.c文件(假设包含主函数main)。

若只想编译testc2.c文件,鼠标选中testc2.c的编辑界面(其他.json不用改动)

之后直接点击运行生成任务。则可看到生成testc2.c对应的.exe文件。
请添加图片描述
别的.exe对新生的testc2.exe运行毫无影响。
请添加图片描述

若还想写其他代码,生成新的文件夹

可以在旧的文件夹下新建文件夹。

也可以在别的路径新建别的文件夹。
请添加图片描述

要在新的test3文件夹下写代码,则需要关闭当前文件夹。
请添加图片描述
关闭文件夹后会回到vscode的欢迎界面。再打开文件夹即可。
请添加图片描述
之后重新写代码,将.vscode拷贝到新文件夹后即可直接执行运行生成任务,而不用额外配置**.json**文件。

vscode编译同个文件夹的多个.c代码

假设某个工程有两个.c文件:test.cadd.ctest.c里的main函数想调用add.c里的Add函数,

可以加关键字extern调用外部符号。

同时需要注意,蓝色边界线选中的是.vscode这个文件夹,则vscode会将文件生成在.vscode文件夹内。
请添加图片描述

请添加图片描述
想生成在大文件夹或者别的指定文件夹,则需要使蓝边界选中。
请添加图片描述
请添加图片描述
代码写完后,表示编译选项信息的c_cpp_properties.json无需更改。

tasks.json是我们在编译过程中的编译选项,这个需要修改配置使得一个文件夹里的多个文件能够编译。

改进方式如下:
请添加图片描述
${file}是指要编译的文件,但仅对于指定文件。因此需要改成${workspaceFolder}\\*.c。若全是.cpp文件,则把.c换成.cpp即可。其中\\是路径分隔符,*.c是指目录下所有的.c文件。
请添加图片描述
此外,多个.c文件对于输出的\.exe的名字也要做相应的修改。这里我们尝试将输出的文件名字和文件夹的名字相同,于是将${fileDirname}\\${fileBasenameNoExtension}.exe改成${workspaceFolder}\\${workspaceRootFolderName}.exe
请添加图片描述

之后运行生成任务即可生成以文件夹命名的.exe文件。(演示效果1)
请添加图片描述

修改完成之后还是不能用,则可再点击配置文件。

vscode编译多个.c代码时有时会遇到自定义头文件以及头文件附属文件的情况(如A.hA.cA.h负责声明函数、结构体等,A.c负责实现A.h中的函数等)。

需要重新生成tasks.json,之后将tasks.json中的${file}改成${workspaceFolder}\\*.c。若全是.cpp文件,则把.c换成.cpp即可。

有时可能不行,需要重启vscode。

vscode使用操作系统指令编译.c代码

相比于上方的步骤,这个更加简洁。

编译单个.c源码

直接新建终端。
请添加图片描述
输入指令gcc name.c即可生成可执行程序。这个版本的gcc生成的可执行程序默认为a.exe。前提是代码在编译过程中无错误。
请添加图片描述
后在终端输入.\a.exe即可运行程序。用反斜杠\是因为终端的路径也用这个符号。
请添加图片描述
若想让生成的可执行程序变成我们想要的文件名,可以更换指令为

gcc name.c -o name.exe

name.exe的取法不固定,甚至可以不用加拓展名。但前提是以后能认出来这个是啥。
请添加图片描述

编译多个.c源码

例如这是一个声明和定义分离的代码:
请添加图片描述
同样可以输入指令gcc *.c生成可执行程序a.exe
请添加图片描述
同样可以输入指令gcc *.c -o name.exe将文件夹下所有的.c文件一起编译,生成可执行程序。前提是代码在编译过程中无错误。
请添加图片描述

通过vscode观察c语言程序的编译过程

c语言的编译过程

  1. 源码阶段,文件拓展名都是.c,是程序员编辑的c语言文本。其中还含有用于声明的头文件。
  2. 预编译阶段(*.i),进行这些工作:
  1. 头文件包含,由#include指令完成。即将头文件内容展开。
  2. 删除注释。
  3. #define指令的符号替换。
  1. 编译阶段(*.s),进行这些工作:
  1. 语法分析
  2. 词法分析
  3. 语义分析
  4. 符号汇总,将*.i文件翻译成汇编代码。
  1. 汇编(生成可重定位目标文件*.o
  1. 形成符号表
  2. 汇编指令->二进制指令-> *.o

vs的MSVC生成的是.obj,而gcc生成的是.o

  1. 链接
  1. 合并段表
  2. 符号表的合并和符号表的重定位

用一句话概括:生成的多个.o文件经过链接器处理生成可执行文件.exe

在大学的计算机相关专业的课程里有这样一门课:《编译原理》。这门课主要讲的是如何设计编译器,编译器的工作原理是什么,它按照语法规则去解析我们写的代码。

这里推荐一本书《程序员的自我修养–链接、装载与库》,里面有介绍编译原理。

通过指令逐步重现c语言的编译过程

  1. 预编译

通过指令gcc name.c -E展开头文件、删除注释和替换#define定义的符号,并将参与编译的源码的内容输出在控制台。

请添加图片描述

  1. 预编译并生成.i文件

通过指令gcc name.c -E -o name.i(或gcc -E main.c -o main.i展开头文件、删除注释和替换#define定义的符号,并将参与编译的源码的内容用另外一个文件name.i保存。
请添加图片描述

  1. 编译,生成.s文件用于存储生成的汇编代码。

通过指令gcc -S name.c(或gcc name.c -Sgcc name.i -sgcc -s name.i)生成汇编代码(通过name.i),并将代码保存在name.s中。

在visual studio系列产品中有反汇编功能,可以看到c语言源码中各语句都翻译成了哪些汇编语句。vscode或许有,但我没找到。

请添加图片描述

  1. 汇编,通过.s文件生成.o二进制文件。

通过指令gcc -c name.c(或gcc -c name.cgcc name.s -c)生成二进制文件name.o。准确的说是汇编代码翻译成二进制文件。
请添加图片描述

  1. 链接,将所有.o文件通过链接器处理生成可执行文件.exe

通过指令gcc name.s -o name.exename.s通过链接器生成可执行文件.exe
请添加图片描述

vscode编译c++代码

非命令行的形式

鼠标选中.cpp文件内部,按Ctrl+Shift+p(或依次点击 帮助 → \rightarrow 显示所有命令)打开命令选择框。打开c/c++编辑配置(UI)(c/c++:Edit configurations (UI))
请添加图片描述

配置名称可以不改,点击添加,命名任意(例如cpp)
请添加图片描述
请添加图片描述

编译器路径选择g++.exe
请添加图片描述

之后选则IntelliSense模式,选基于gcc和g++代码提示的工具,依旧选择gcc-x64(legacy),之后其他配置不用管。当然也可以改c++的标准。
请添加图片描述

配置完成后,选中.cpp文件,点击终端,配置任务,选择g++.exe的弹窗,即可完成tasks.json的配置。tasks.json也能配置是否编译根目录中的.cpp文件。
请添加图片描述

请添加图片描述

即可生成task.json文件。
请添加图片描述
一切准备就绪后,光标选中.cpp文件,点击终端,运行生成任务,注意要选择g++.exe。后将会生成属于c++的.exe文件。
请添加图片描述
请添加图片描述

其实上方c语言的操作对c++同样适用。

命令行的形式

将c语言的指令中的gcc改成g++就行。g++gcc一样都是编译器,用来编译.cpp源码。

c++出于历史原因(不如说过去用c语言的人太多,很多bug牵扯到太多人的利益不敢全改,就出新bug来试图弥补旧bug的缺陷),兼容c语言。所以c++的编译过程和c语言是一样的,将c语言的指令搬过来,将gcc改成g++就行。

为了方便拷贝,将指令写在这:

g++ name.cpp -E -o name.i 生成.i文件

g++ name.i -S 生成.s文件

g++ name.s -c 生成.o文件

g++ name.o -o name.exe 链接.o文件生成.exe文件
请添加图片描述
vscode对头文件报红是因为没有配置c_cpp_properties.json文件,或用了别的配置比如编译器用了cl.exe,使得vscode的插件找不到这个头文件所在。因为是通过命令的方式调用g++,所以这个并没有什么影响。

让vscode不报红,鼠标选中.cpp文件内部,按Ctrl+Shift+p(或依次点击 帮助 → \rightarrow 显示所有命令)打开命令选择框。打开c/c++编辑配置(Edit Configuration)。即可进行配置。

或者手动更改编译器路径(compilerPath部分)
请添加图片描述

声明和定义分离的c++项目

例如这个样例:
请添加图片描述

指令g++ *.cpp即可生成可执行程序。但名字还是a.exe
请添加图片描述
也可以通过指令g++ *.cpp -o name.exe指定生成的程序的名称。
请添加图片描述
指令g++ *.cpp -E -o name.i无法用于多个文件。但指令g++ *.cpp -E依旧能用。
请添加图片描述
同样能用的指令还有g++ *.cpp -c,即为每一个.cpp文件各自生成一个.o文件。

这些.o文件同样可以通过g++链接成可执行文件.exe
请添加图片描述

vscode如何调试代码

vscode调试代码依赖launch.json,

点击左边的运行调试。
请添加图片描述
点击创建launch.json文件,后弹出的选项中选择C++(GDB/LLDB)。mingw64用的调试工具是这个。
请添加图片描述
生成的文件中啥都没有,点击添加配置,会弹出选项。选择c/c++: (gdb) 启动。即可增加信息。
请添加图片描述

请添加图片描述
请添加图片描述
改造生成的信息中的部分信息:
program,将tasks.json中生成可执行程序时用到的生成方式,粘贴到program后面的""中。
请添加图片描述
之后的miDebuggerPath,即调试的工具,需要自己补充。在mingw64中可以找到gdb.exe,需要将gdb.exe的路径拷贝到后面。
请添加图片描述
修改完成后,再按Ctrl+Shift+b运行生成任务(或点击终端,运行生成任务),点击生成.exe可执行程序。注意不要通过命令行的方式生成可执行程序,因为这种生成方式生成的可执行程序无法调试。
请添加图片描述
点击运行生成任务之后,根据自己的程序是c语言还是c++选择合适的编译器。例如这里是c++项目,就选g++。
请添加图片描述
做完上面的工作之后,只需要打断点即可调试,快捷键和vs2022几乎一致。
请添加图片描述
调试的花絮:
在这里插入图片描述
左边也会显示监视窗口。打印的数据可以在终端查看。

调试时若存在程序员修改源码的行为,则要先手动生成.exe,否则调试是按照未修改源码前生成的.exe进行。

最后

除了gcc和g++,还可以用cmake进行编译。但自己没试过,不知道好不好用。

vscode相对于其他IDE属于轻量级。

vscode的运行文件尽量放在只有英文字符的路径下,否则会出现找不到指定文件的情况。

写这篇文章的目的是自己记性不好,偏偏用的开发环境又比较多,vscode的部分操作又特别繁琐,总是忘记vscode怎么用,因此将每一步都记录下,以后想不起来vscode怎么用时再打开文章看看。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Darkwanderor

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值