VS Code 配置 C/C++ 编程运行环境(保姆级教程)

文章目录

  • 一、软件下载
    • 1. 下载 VS Code 安装工具
  • 2. 下载 MinGW-W64
  • 二、安装 VS Code
  • 三、安装 MinGW-W64 及配置环境变量
  • 四、配置 VS Code 的 C/C++ 编程运行环境
    • 1. 汉化 VS Code(选做)
    • 2. 安装 C/C++ 扩展包
  • 五、测试 VS Code 的 C/C++ 编程环境
    • 1. 创建代码文件夹
    • 2. 单个 .c 文件的运行和调试
    • 3. 多个 .c 文件的运行与调试
  • 参考资料

在本教程中,将会安装 Visual Studio Code(后简称 VS Code),并在 VS Code 中安装 C/C++ 相关插件, 同时也将 VS Code 配置为使用 MinGW-W64 中的 GCC C/C++ 编译器(gcc/g++)和 GDB 调试器来创建在 Windows 上运行的程序。配置 VS Code 后,你将编写、编译、运行和调试大多数的 C/C++ 程序。

本教程所有参考内容均来自Documentation for Visual Studio Code。

一、软件下载

1. 下载 VS Code 安装工具

官方下载链接:Visual Studio Code - Code Editing. Redefined

在这里插入图片描述

直接点“Download for Windows”就可以进行下载。

2. 下载 MinGW-W64

MinGW-W64 可以去MinGW-w64的官网下载,也就可以直接去 MinGW-W64 的 GitHub 上下载。由于在官网下载容易下错,所以我这里给一个 GitHub 的链接,也是在 VS Code 上提供的链接。(官方认证,绝对没错!)

MinGW-W64下载链接:Releases · msys2/msys2-installer (github.com)

进入链接后,可以看到历史版本的更替,截至本教程编写日期,最新版本为 2024-01-13 的版本,单击日期跳转至下载窗口。

在这里插入图片描述

如下图所示,选择msys2-x86_64-20240113.exe(记住前缀是 msys2-x86_64 就行,后面是日期),点击后面的下载标志。

在这里插入图片描述

二、安装 VS Code

双击运行VSCodeUserSetup-x64-1.87.2.exe

在这里插入图片描述

如果出现如下弹窗,单击运行即可。

在这里插入图片描述

选择我同意此协议并单击下一步

在这里插入图片描述

这里提示 VS Code 的安装位置,我只有一个 C 盘(现在的固态硬盘可以选择不分区),所以选择默认默认路径,直接点击下一步。当然,你的电脑硬盘要是有分区的话,可以选择其他路径。

在这里插入图片描述

这一步是创建快捷方式的名字,可以输入其他名字,下面的选项如果不勾选,就会把快捷方式添加到开始菜单中。我选择默认,直接点下一步

在这里插入图片描述

默认只有最后两项被选中,我全部选上,单击下一步在这里插入图片描述

最后再确认一下信息,确认之后直接安装即可。

在这里插入图片描述

大概一分钟左右就可以安装完成。

在这里插入图片描述

安装完成后,先暂时不运行 VS Code,把勾选去掉,点击完成

在这里插入图片描述

三、安装 MinGW-W64 及配置环境变量

双击msys2-x86_64-20240113.exe运行安装程序。

在这里插入图片描述

[!CAUTION]

请注意,MSYS2 需要 64 位 Windows 8.1 及以上版本。

此界面直接点击下一步

在这里插入图片描述

选择安装的路径,我这里选择默认,同学们可以根据自己的情况修改路径,之后点击下一步

在这里插入图片描述

开始菜单中的名字,这个还是可以直接默认,点击下一步

在这里插入图片描述

开始安装。

在这里插入图片描述

待进度条走完,直接点击下一步

在这里插入图片描述

默认勾选立即运行MSYS2,单击完成

在这里插入图片描述

当按下完成之后,会弹出打开一个 MSYS2 终端窗口。

在这里插入图片描述

在此终端中,通过输入以下命令并按回车键,安装 MinGW-w64 工具链:

pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain

出现这个界面,直接按回车键,默认接受所有的安装包。

在这里插入图片描述

当系统提示是否继续安装时,请输入y并回车。

在这里插入图片描述

之后就进入安装过程,稍等片刻。

在这里插入图片描述

当所有的包都安装好后,直接关闭终端。

在这里插入图片描述

打开安装 MSYS2 的目录,先找到ucrt64文件夹并进入,再找到bin文件夹并进入,然后在地址栏中,复制路径。

如果一开始用默认路径,那路径就是C:\msys64\ucrt64\bin

在这里插入图片描述

然后在搜索框中输入 编辑系统环境变量,并打开编辑系统环境变量的设置界面。

在这里插入图片描述

在系统属性的弹窗中,点击环境变量

在这里插入图片描述

在弹出的环境变量弹窗中,找到用户变量的Path,并双击打开。

在这里插入图片描述

此时会弹出编辑环境变量的窗口,先点击新建按钮,然后会在空白行中出现一个输入框和一个闪烁的光标,在这里粘贴上广告复制的路径,最后点击确定按钮回到上层弹窗。

在这里插入图片描述

最后逐层弹窗点击确定按钮退出即可。

在这里插入图片描述

最后做一下测试,按组合键Win + r之后,输入cmd回车。

在这里插入图片描述

回车之后,就可以调出 CMD 的终端窗口了,然后分别输入下面的命令,每输入一次命令后回车一次。

gcc --version
g++ --version
gdb --version

出现如下图一样的信息,就说明 C/C++ 的编译环境已经安装好。

在这里插入图片描述

四、配置 VS Code 的 C/C++ 编程运行环境

1. 汉化 VS Code(选做)

这个配置环节并不属于 C/C++ 编程运行环境的配置必要环节,先挑战或想适应英文开发环境的同学可以跳过。

考虑到很多同学的英文水平可能不是很好,对于全英文的开发环境会犯难,这里可以使用 VS Code 自带的汉化插件来解决这个问题。

首先启动 VS Code 软件,按下组合键Ctrl + Shift + x,或者直接点击左边的第五个小图标,进入Extensions

在这里插入图片描述

在上方输入框中键入Chinese,扩展插件的列表会刷新出汉化插件,点击对应的Install按钮进行安装。

在这里插入图片描述

安装好后,软件界面的右下角会弹出通知,并附带Change Language and Restart的按钮,点击这个按钮,即可重启软件。

在这里插入图片描述

软件重启后,就是中文的界面了。

在这里插入图片描述

2. 安装 C/C++ 扩展包

Extensions中搜索“C++”,列表第一个扩展包就是我们要的,点击安装即可。

在这里插入图片描述

[!TIP]

上图中的C/C++ Extension Pack是 C/C++ 的扩展功能包,里面包含了一些项目管理和代码构建的工具,不是必要的扩展包,可以选择性安装。

五、测试 VS Code 的 C/C++ 编程环境

1. 创建代码文件夹

VS Code 是一款基于文件夹进行代码编辑和管理的编辑器,通常我们会把新建一个文件夹来管理同一个项目的代码,并在 VS Code 中打开。

我新建了一个名为Code的文件夹,并在里面新建了一个用于专门放 C 语言代码的文件夹。

在这里插入图片描述

[!WARNING]

需要注意的是,这个路径最好不要存在中文,否则会出现编译失败等问题。

打开 VS Code,点击打开文件夹的按钮。

在这里插入图片描述

在弹窗中找到刚刚新建的C文件夹,选中文件夹,再点选择文件夹

在这里插入图片描述

选中文件夹后,在新弹出的窗口中,勾选上信任父文件夹"Documents"中所有文件的作者,再点是,我信任此作者

在这里插入图片描述

文件添加好后,在左边的资源管理器中会出现CODE文件夹以及子文件夹C,把鼠标放在文件夹上面,会出现四个小图标。四个小图标从左往右的作用分别是新建文件新建文件夹刷新资源管理器以及在资源管理器中折叠文件夹

在这里插入图片描述

好了,做到这一步,接下来就可以进行代码的运行和调试了。

2. 单个 .c 文件的运行和调试

为了方便管理代码,我们先选中C文件夹,再点击新建文件夹按钮。

在这里插入图片描述

此时会在C文件夹的下级出现一个输入框,我们新建一个名为test的文件夹。

在这里插入图片描述

鼠标右键test文件夹,在弹出的菜单中选择新建文件

在这里插入图片描述

在输入框中输入我们接下来要进行调试代码文件名,命名为test.c,注意,一定要是 .c 结尾。

在这里插入图片描述

接下来就可以输入一个调试程序了,我的代码如下:

#include <stdio.h>int main()
{for (int i = 0; i < 5; i++)printf("Hello Grayson~%d\n", i); return 0;
}

写好测试代码后,点击右上角的调试按钮,这时会弹出调试程序的选项,选择第一个,也是本教程前面安装的 gcc 编译工具。

在这里插入图片描述

这时文件就被编译并执行,如果在右下角弹出如下窗口,点击即可。

在这里插入图片描述

运行结果如图所示。

在这里插入图片描述

如果要进行简单的断点调试,可以在行号前加一个断点,操作也很简单,只需用鼠标左键点一下行号左边的空白处即可。如下图所示,是在第六行处加了一个断点。

在这里插入图片描述

这时再去运行程序,搜索框下面就会出现调试的面板,面板上有六个按钮,分别是继续逐过程单步调试单步跳出重启停止

在这里插入图片描述

[!IMPORTANT]

以下是 VS Code 中的 C 语言代码调试面板功能的解释:

  1. 继续(Continue):继续执行程序,直到遇到下一个断点或程序结束。
  2. 逐过程(Step Over):逐行执行当前行,如果当前行是函数调用,则进入该函数并执行完毕。
  3. 单步调试(Step Into):逐行执行当前行,如果当前行是函数调用,则进入该函数并停在函数内的第一行。
  4. 单步跳出(Step Out):执行完当前函数的剩余部分,并停在当前函数被调用的下一行。
  5. 重启(Restart):重新启动程序的调试会话,即从程序的起点开始执行。
  6. 停止(Stop):停止程序的调试会话,结束调试过程并关闭程序执行。

目前这个程序还不能很好说明以上的调试功能(至少逐过程单步调试单步跳出这三个并不明显),所以在后面的内容将以另一个代码进行演示。

3. 多个 .c 文件的运行与调试

如果想要进行多个 .c 文件编译后的调试,就需要进行一些配置修改。如果进行过一次编译运行,我们会发现在资源管理器的C文件夹下,多出一个.vscode的文件夹,这个文件夹里面有个tasks.json的文件

在这里插入图片描述

这个文件是用于定义任务配置,这些任务可以在 VS Code 中运行,例如编译代码、运行测试、启动调试器等。tasks.json文件是一个 JSON 格式的文件,其中包含了任务的配置信息,包括任务名称、命令、参数等。通过编辑tasks.json文件,我们可以自定义项目中的各种任务,并在 VS Code 中方便地执行这些任务。

当前的 VS Code 的运行效果还不是很理想,双击打开tasks.json文件修改一下编译运行功能。下图是对该 JSON 文件做了部分解释。

在这里插入图片描述

具体修改如下图所示,我注释掉了原来的"${file}",并新增一行"*.c",表示并非指定某一个 .c 文件,而是当前文件夹下所有的 .c 文件。同时也把"${fileDirname}\\${fileBasenameNoExtension}.exe"注释掉,改成"${fileDirname}\\program.exe",那么多个 .c 文件编译之后的可执行文件就是program.exe

在这里插入图片描述

修改好后,按组合键Ctrl + s保存即可。

然后点击左侧的运行与调试,再点击创建launch.json文件

在这里插入图片描述

搜索框会弹出选项,选择C++(GDB/LLDB)

在这里插入图片描述

然后 VS Code 会新建一个 JSON 文件,点击右下角的添加配置,在弹出的下拉菜单中选择C/C++:(gdb)启动

在这里插入图片描述

此时,JSON 文件会多出一些配置信息,需要我们修改的内容如下图所示的红框标志内容。

在这里插入图片描述

修改为下图红框所示内容,“program”后的内容就是前面提到的tasks.json文件中的编译后产生的可执行文件。"miDebuggerPath"后面的则是前面安装的 MinGW-W64 的 gdb 工具的路径。修改后保持关闭。

在这里插入图片描述

[!NOTE]

在复制粘贴 gdb 的路径时,不少小伙伴会忽略掉下图所示的问题。反斜杠是转义字符的作用,应该像上图一样多加一个一个反斜杠才表示路径。

在这里插入图片描述

之后,我们进行多文件的编译调试,先在C文件夹下新建一个新的文件夹,我这里命名为test2,并在这个文件夹里面新建三个文件,分别是test.cmax.hmax.c

在这里插入图片描述

代码如下:

max.h

#ifndef __MAX_H__
#define __MAX_H__
#include <stdio.h>int findMaxNum(int num1, int num2);#endif // __MAX_H__

max.c

#include "max.h"int findMaxNum(int num1, int num2)
{return num1 > num2 ? num1 : num2;
}

test2.c

#include <stdio.h>
#include "max.h"int main()
{int a = 10;int b = 20;int c = findMaxNum(a, b);printf("%d\n", c);return 0;
}

代码写好后,给test2.c的第 8 行代码打一个断点,再点调试按钮旁边的小三角形,在下拉菜单中选择调试C/C++文件

在这里插入图片描述

调试面板依旧是之前的那个。如果点击继续,调试过程会跳到下一个断点,不过我们这个程序只打了一个断点,所以会直接运行到程序结束并退出调试。

在这里插入图片描述

如果点击逐过程,则在不进入函数内部,而是直接输出函数的运行结果,然后跳到下一行。

在这里插入图片描述

如果点击单步调试,则会进入被调用函数的内部,继续点击单步调试会一步一步执行并返回。如果进入函数后,点击单步跳出则直接带着函数的执行结果返回被调用处。

在这里插入图片描述


参考资料

《Running Visual Studio Code on Windows》

《C++ programming with Visual Studio Code》

《Get Started with C++ and MinGW-w64 in Visual Studio Code》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hku-mars雷达相机时间同步方案-软件驱动(MID360与海康MV-CB060-10UMUC-S)

hku-mars雷达相机时间同步方案-软件驱动 hku的方案在硬件和软件方面都做了工作&#xff0c;所以才会实现相机帧和雷达帧的完全对齐。硬件方面的设置请参考上一期。 港大的同步结果&#xff1a; hku-mars雷达相机时间同步方案-硬件&#xff08;MID360与海康MV-CB060-10UMUC-S&…

窗口嵌入桌面背景层(vb.net,高考倒计时特供版)

开发思路 根据系统生成高考倒计时的具体时间&#xff0c;附加江苏省省统考的时间生成算法&#xff0c;并且用户可以根据实际情况调整前后30天&#xff0c;具有丰富多彩的图片库和强大的自定义功能&#xff0c;效果图见P3 目前程序处于正式版的1.4版本&#xff0c;本程序由本作…

【HarmonyOS】鸿蒙头像上传-(编辑个人信息页- 头像上传)+实时数据更新

#效果图 #思路 ##步骤&#xff1a; ###一、利用picker api选择1张图片 实例化选择器参数(使用new PhotoSelectOptions())实例化图片选择器 (使用newPhotoViewPicker() )调用图片选择器的select方法传入选择器参数完成图片选取获得结果 利用picker api选择1张图片 async sele…

[Redis] Redis中的Hash类型和List类型

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key&#xff0c;也就是defaultZone不支持snake-c…

【PCB工艺】如何实现PCB板层间的互连

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言①、什么是通孔②、通孔是怎样产生的③、通孔种类④、盘中孔⑤、设计建议 前言 送给大学毕业后找不到奋斗方向的你…

C++函数在库中的地址

本文讲述C如何直接调用动态库dll或者so中的函数。 首先我们准备一个被调用库&#xff0c;这个库里面有两个函数&#xff0c;分别是C98 与 C11 下的&#xff0c;名称是run2和run1。 被调用库 相关介绍请看之前的文章《函数指针与库之间的通信讲解》。 //dll_ex_im.h #ifndef…

OpenSSH9.8p1编译rpm包(建议收藏)

1.升级前的openssh版本 [root@ncayu8847 ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 20172.下载软件包(离线包) openssh 源码下载地址: https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/openssl源码下载 https:/

JUC学习笔记(二)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 四、共享模型之内存4.1 Java 内存模型4.2 可见性退不出的循环解决方法可见性 vs 原子性模式之 Balking1.定义2.实现 4.3 有序性原理之指令级并行1. 名词2.鱼罐头的故…

关于手机号码数理的计算和推导,获得“平替”尾号

文章背景&#xff1a;我个人比较相信命运&#xff0c;对于手机号码的吉凶或是数理颇为在乎。最近&#xff0c;我沉浸于这方面的研究中&#xff0c;并发现许多手机号码的数理核心竟出奇地一致——关键在于后四位尾号&#xff0c;而前面的数字似乎并不占据主导位置。然而&#xf…

使用 GaLore 预训练LLaMA-7B

项目代码&#xff1a; https://github.com/jiaweizzhao/galorehttps://github.com/jiaweizzhao/galore 参考博客&#xff1a; https://zhuanlan.zhihu.com/p/686686751 创建环境 基础环境配置如下&#xff1a; 操作系统: CentOS 7CPUs: 单个节点具有 1TB 内存的 Intel CP…

【C++】入门基础(下)

Hi&#xff01;很高兴见到你~ 目录 7、引用 7.3 引用的使用&#xff08;实例&#xff09; 7.4 const引用 【第一分点】 【第二分点1】 【第二分点2】 7.5 指针和引用的关系&#xff08;面试点&#xff09; 8、inline 9、nullptr Relaxing Time&#xff01; ———…

Mysql(二) - 约束, 进阶查询

目录 一.约束 1.not null 2.unique 3.default 4.primary key 5. foreign key 6.check 7. 综合使用 二.进阶查询 1.新增(插入查询的结果) 2.聚合查询 a.聚合函数 b.使用 3.分组查询 4.联合查询 a.内连接 b.外连接 c.自连接 d.子查询 5.合并查询 三.总结 一…

基于SpringBoot的招生宣传管理系统【附源码】

基于SpringBoot的招生宣传管理系统&#xff08;源码L文说明文档&#xff09; 目录 4 系统设计 4.1 系统概述 4.2系统功能结构设计 4.3数据库设计 4.3.1数据库E-R图设计 4.3.2 数据库表结构设计 5 系统实现 5.1管理员功能介绍 5.1.1管理员登录 …

Ubuntu22.04系统安装opencv步骤简述及问题解决方法

前言 opencv是一个功能强大、开源且跨平台的计算机视觉库&#xff0c;适用于多种编程语言和操作系统&#xff0c;能够帮助开发者构建各种视觉项目。其模块众多&#xff0c;提供了诸多功能&#xff0c;能够进行图像处理、视频处理等等。比如&#xff1a;Highgui模块提供图像用户…

Python 解析 JSON 数据

1、有如下 JSON 数据&#xff0c;存放在 data.json 文件&#xff1a; [{"id":1, "name": "小王", "gender": "male", "score": 96.8}, {"id":2, "name": "小婷", "gender&qu…

Python 课程12-Python 自动化应用

前言 Python 自动化应用 可以帮助开发者节省时间和精力&#xff0c;将重复性、手动操作变为自动化脚本。例如&#xff0c;Python 可以用于自动化处理文件、邮件、生成报表&#xff0c;甚至可以控制浏览器执行复杂的网页操作任务。借助 Python 的强大库和工具&#xff0c;可以轻…

python学习——对无人机影像有RGB转换到HSV

问题描述 最近需要对无人机影像中绿色植被信息进行提取&#xff0c;查看相关论文&#xff0c;发现用的比较多的就是HSV色彩转换方法&#xff0c;动手实践一下。 解决思路 #mermaid-svg-5ejGodIusPv6zFVS {font-family:"trebuchet ms",verdana,arial,sans-serif;fon…

浪潮信息首推3秒智能控温!告别服务器开机噪音

在当前的数据中心运维实践中&#xff0c;运维人员在部署服务器时常被“飞机起飞”般的开机噪音所困扰。服务器刚刚接通电源&#xff0c;其内部元件尚处于预热待命状态&#xff0c;而风扇却已全速运转&#xff0c;这不仅加剧了噪音污染&#xff0c;还拖慢了启动速度&#xff0c;…

了解华为云容器引擎(Cloud Container Engine)

1.什么是云容器引擎&#xff1f; 云容器引擎&#xff08;Cloud Container Engine&#xff0c;简称CCE&#xff09;提供高度可扩展的、高性能的企业级Kubernetes集群。借助云容器引擎&#xff0c;您可以在华为云上轻松部署、管理和扩展容器化应用程序。云容器引擎是一个企业级的…