当前位置: 首页 > news >正文

vscode的C/C++环境配置和调试技巧

目录

1.背景

2.下载编译器

3.配置环境变量

4.安装C/C++插件

5.写C语言代码并且编译成功

5.1文件操作

5.2对于两个窗口的解释

5.3C语言编译环境配置

6.创建执行文件

7.编译运行过程

8.写其他的代码的解决方案一

9.写其他的代码的解决方案二

10.同时编译多个.c文件

10.1对于内容的修改

10.2文件内容

10.3重新编译

11.C++环境配置和运行(和C基本一样)

12.vscode调试过程

12.1创建launch文件

12.2添加配置

12.3效果图展示

12.4对于launch文件的修改


1.背景

我个人的话最早接触这个vscode是学习python的时候,知道的这么一个编辑器,当时还是纯小白,所以不太明白这个vscode的强大之处,还不理解这个编辑器,编译器的相关的概念,加上当时这个python学习并不顺利,因为使用这个软件编写代码老报错,所以觉得这个软件并不怎么好用,后来发现自己大错特错了;

后来学习前端的时候,使用这个vscode写过一些类似于CSS文件,又觉得这个软件还是挺好的,但是对于这个软件学习python还是很有阴影的,后来了解到这个编译器,编辑器的相关概念,以及集成开发环境这些东西,感觉自己错怪了他;

现在,知道这个C,C++代码也可以使用这个vscode进行编写,因为我之前使用的都是visual studio集成开发环境,但是数学建模写的python代码就是用这个软件,所以我就想学习一下这个软件的相关操作,因为之前一直知道这个vscode的强大之处,我也知道这个软件没有我想象里面这么简单,所以这个时候我就决定学习这个vscode编写C/C++代码,增强自己对于vscode的理解;

2.下载编译器

因为这个vscode就是一个编辑器,所以C/C++代码想要进行编译的话,我们就需要去下载一个编译器,就是类似于gcc/g++这样的东西,把我们的代码运行起来,下面的就是下载的连接和选项(下载的时间可能有点长);

MinGW-w64 - for 32 and 64 bit Windows download | SourceForge.neticon-default.png?t=N7T8https://sourceforge.net/projects/mingw-w64/

我们下载之后需要解压,我们可以先解压到D盘,存的话,建议存到根目录下面,比较容易找到的位置,我这里是存到了C盘的根目录里面去,方便我们后续对于这个环境变量的控制;

3.配置环境变量

配置环境变量可以让我们在命令行里面进行操作,而且可以避免我们后面出现的很多的问题,就是把我们的bin路径(bin在我们的那个解压的文件里,一般是第一个)添加到环境变量里面去(这个只要配置过一次就熟悉了,我之前介绍这个qt的那个时候就介绍过这个过程,详细信息可以去看那个教程,新手还是了解一下最好);

Qt相关安装教程-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/binhyun/article/details/141083921?spm=1001.2014.3001.5502配置好环境变量之后,我们就可以在我们的命令行里面查看我们的编译器的版本:

按住win+R键,输入cmd,敲入下面的这一行命令之后,我们就可以去检查我们的gcc版本:如果出现对应的信息,就可以说明我们的安装是成功的;

4.安装C/C++插件

这个是在vscode里面安装的插件,这个插件按照下面的方式进行安装,安装后重启,就可以让我们的相关设置生效;

5.写C语言代码并且编译成功

5.1文件操作

这个就是创建文件夹,然后在vscode里面打开这个文件夹,在里面写对应代码:

5.2对于两个窗口的解释

不得不说一下,我到今天才明白这个东西,其实vscode里面有两个窗口,一个是我们的搜索窗口,一个就是设置的窗口,我们进行这个代码编译环境使用的就是设置窗口;

这个就是vscode里面最常见的一个窗口,但是这个窗口只能搜索相关的文件,不可以干其他的事情,我们的配置不是在这个窗口里面进行的;

按住ctrl+shift+P快捷键,这个弹出的窗口才是我们进行配置的窗口(虽然他们在一个位置):

5.3C语言编译环境配置

进去搜索:

选择配置:我们首先配置的就是编译器的路径,这个时候一个下拉菜单的(肯呢个不会显示,但是你点值得会出来选项,真的,我当时想要修改也觉得懵懵的,这个难道是要让我去手写路径吗,觉得这个是可以选择的,实际上这个就是可以选择的),这个根据大家的安装位置进行选择,因为我的是先安装在了D盘里面,后来拷贝到了C盘大根目录下面,所以这个显示的C/D盘都有这个gcc,因此这个需要我们根据实际情况进行配置,在那个盘里面就选哪个盘;

选择对应的模式:这个完成的话配置就结束了;这个时候左边的栏目里面会生成一些文件,这个就是我们进配置之后的效果;

6.创建执行文件

我们点击终端里面的配置任务选项(这个终端位置因为视图的原因是可以调整的):

我们选择对应的选项点击打开:

出现的这个.json文件就是用来进行代码编译任务的,这个里面有一些相关的设置,我们不了解也没有影响;

7.编译运行过程

终端里面选择:运行生成任务:

点击mingw对应的目录里面的文件:

这个时候左边就会生成一个exe的可执行程序,这个就是我们想要运行的可执行程序:

ctrl+'(一个字符,esc键下面)这个快捷键的作用就是调出来我们的vscode里面的终端,我们要在里面输入相关的指令,来运行生成的可执行程序;

输入./表示我们当前的路径下的文件,后面的就是我们生成的exe的文件名字,点击enter键,就可以执行我们的C语言代码,生成运行的结果了;

8.写其他的代码的解决方案一

在原有的文件夹下面去创建新的文件:例如我们添加一个add.c文件

这个时候侧栏里面就会增加一个新的exe文件,我们还是在终端里面对于这个进行执行:

如果你晕倒下面的问题,可以使用点击垃圾桶标识之后再点击快捷键调出来这个终端窗口,输入运行的指令,就可以执行这个文件;

9.写其他的代码的解决方案二

创建新的文件夹去进行代码的编写:

我们创建一个新的文件夹,然后在这个vscode里面打开文件夹,这个时候我们不需要像上面那样进行繁琐的操作,而是直接复用即可;

进入我们的上次编写的文件:

把这个里面的.vscode文件拷贝到新的文件夹里面,这个时候在vscode里面刷新一下就可以按照正常的终端----运行-----敲入指令----enter键的方式,运行我们的程序了;

10.同时编译多个.c文件

10.1对于内容的修改

我们下面就是用一个简单的函数调用完成这个多文件过程展示:

这个还是把原来的.code文件进行拷贝到我们的目录下面,这个时候因为我们是多文件系统,多医药对于这个里面的一些内容进行修改;

10.2文件内容

10.3重新编译

11.C++环境配置和运行(和C基本一样)

生成可执行exe文件:

这个在选择编译选项的时候就是使用的g++进行编译的:同样的方法运行程序;

12.vscode调试过程

这个过程还是有点麻烦的,我尽量介绍的详细一些:首先就是点击左边栏的圈1,调出之后点击创建launch.json文件

12.1创建launch文件

点击之后选择gdb选项;

12.2添加配置

点击gdb之后点击右下角的添加配置:

选择gdb启动,这个时候就会给我们的launch里面添加一些新的内容

12.3效果图展示

添加配置之后的效果

12.4对于launch文件的修改

因为这个是进行调试,所以我们要选择对应的被调试的文件:

左边的json就是我们之前里面的那个.vscode里面的json文件,右边的就是launch文件,我们需要把我们的对应的被调试的test.cpp文件的json文件里面的内容贴到launch文件的对应位置去:

因为我们的json文件属于test.cpp文件读独属于的,我们把这个里面的东西给launch文件,就是为了让这个json文件知道要对于谁进行编译;

对于路径的修改:这个修改的是什么呢,

注意注意:这个地方还要进行一些修改欧:

开始调试:

调试效果图:

左边有监视窗口,变量窗口等等,同学们可以自行研究;

相关文章:

vscode的C/C++环境配置和调试技巧

目录 1.背景 2.下载编译器 3.配置环境变量 4.安装C/C插件 5.写C语言代码并且编译成功 5.1文件操作 5.2对于两个窗口的解释 5.3C语言编译环境配置 6.创建执行文件 7.编译运行过程 8.写其他的代码的解决方案一 9.写其他的代码的解决方案二 10.同时编译多个.c文件 10…...

Python制作《扫雷》游戏-附源码,轻松看懂,简单易学

今天介绍另一款经典小游戏,扫雷,这个应该是很多人windows电脑里玩的最多的游戏了,乐趣很多,而且还有一定的技术含量在里面,今天我们就来通过python实现这个小游戏。 创建扫雷文件 打开pycharm,创建一个名…...

8路VBO转HDMI2.0支持4K60频率ITE6265芯片方案心得分享

在此之前,有人找到我这边询问能不能将智能电视主板改成机顶盒,将VBO信号转换输出位HDMI进行投屏,具体应用奇奇怪怪!但是奈何是甲方大佬。认命照做。从网上也有搜索了解过这类芯片,发现资料很少,所以有了这篇…...

【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17

前几天在IDEA运行JAVA项目时,出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”,与JDK17版本不兼容,这种情况下要想使得IDEA版本与JDK版本兼容,就需要升级IDEA版本或者使用JDK较低版本&#xff…...

基于Spring Boot的高效宠物购物平台

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...

【Vue3】路由基础

【Vue3】路由基础 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本…...

掌握网络数据的钥匙:Python Requests-HTML库深度解析

文章目录 掌握网络数据的钥匙:Python Requests-HTML库深度解析背景:为何选择Requests-HTML?什么是Requests-HTML?如何安装Requests-HTML?5个简单库函数的使用方法3个场景下库的使用示例常见Bug及解决方案总结 掌握网络…...

网络安全: 模型的脆弱性,鲁棒性和隐私性

在网络安全领域,通常描述模型安全性时,会提到以下三个特性: 脆弱性(Vulnerability):指模型在某些情况下容易受到攻击或被利用的弱点。例如,模型可能对对抗性攻击或梯度泄露攻击敏感。 鲁棒性&a…...

【go语言】go-webview2用法(持续更新)

文章目录 背景核心接口和方法扩展接口遗憾的是 背景 目前为止,已经有很多优秀的electron应用。但其特点也很明显:使用htmlcssjs构建的布局很精致,但是体积不容小觑(最新版electron-egg打包出来的程序已经300MB)。 vs…...

KNN 图像识别

KNN(K-Nearest Neighbors,K最近邻)算法是一种简单而有效的分类算法,也可以用于图像识别。它的基本思想是通过计算样本之间的距离,将待分类的样本归为其在训练集中最相近的K个样本所属的类别中最常见的类别 1. 准备工作…...

基于STM32和云平台的花卉养护系统设计(微信小程序)(209)

文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要【5】选题背景【6】国内外技术发展现状1.4 开发工具的…...

编程语言进化史

编程语言多到你想象不到。 图片来自: 程序设计语言概念 发展历史 自从1946年冯诺依曼原理被提出,计算机数据和指令是通过二进制形式以及后来的汇编语言(二进制助记符),但依然没有改变容易出错的本质。1951年Rutishauser提出的用编译程序实现高级语言的思…...

vuex的原理和使用方法

简介 Vuex 是 Vue.js 应用的状态管理模式,它为应用内的所有组件提供集中式的状态(数据)管理。可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。 Vuex的构成 state:state 是 Vuex 的数据中心,也就是说state是用来…...

(javaweb)SpringBootWeb案例(毕业设计)案例--文件上传

1.简介 前端程序和服务端程序 对于前端 html文件放在static目录下 location---文件提交的位置 右键--copy value -------------c盘目录下 2.本地上传--文件存储 1. 2. 使用uuid:保证文件名是唯一的 此时 并没有文件的拓展名--所以需要---写后缀 用字符串截取 此时图…...

数据库之存储过程和函数

目录 一、存储过程和函数概述 二、创建并调用存储过程和函数 1.创建存储过程 2.创建存储函数 3.调用存储过程和函数 三、关于存储过程和函数的表达式 1.变量 1.变量的分类 2.在存储过程和函数中应用变量 2.定义条件和处理程序 1.定义条件 2.定义处理程序 3.游标的…...

《SPSS零基础入门教程》学习笔记——02.数据管理

文章目录 2.1 连续变量的离散化2.2 自动重编码、编秩与数值计数2.3 几个常用过程2.4 多个数据文件的操作2.5 数据字典2.6 数据核查(1)数据验证模块(2)数据检验 2.7 数据准备 计算新变量(转换 -> 计算变量&#xff0…...

嵌入式软件的一些常用调试测试方法

嵌入式软件的仿真调试测试是确保软件质量和功能正确性的关键步骤。以下是几种常见的仿真调试测试方式: 1.集成开发环境(IDE)调试: 使用IDE(如IAR EWARM、Keil MDK、Eclipse等)内置的调试器进行断点设置、单…...

Android T about screen rotation(二)

需求:客户因为模具问题,屏幕方向需要动态的变动.(方向: 0 , 90 , 180 ,270) 拆分:设备开机过程中图像显示可分为三个阶段,boot logo(1)->kernel logo(2),这一段的处理需要驱动层,所以暂时忽略. 开机动画 Bootanimation(3)阶段 和 Home Launcher应用显示(4)阶段是需要修改的…...

qt反射之类反射、方法反射、字段反射

话不多说&#xff0c;直接上代码&#xff1a; main.cpp: #include < QCoreApplication > #include “fstudent.h” #include “manage.h” int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); //注册类型 qRegisterMetaType(“FStudent”); Manage m…...

服务器数据恢复—raid5阵列离线硬盘强制上线失败如何恢复数据?

服务器数据恢复环境&#xff1a; 某品牌2850服务器上有一组由6块SCSI硬盘组建的raid5磁盘阵列&#xff0c;上层操作系统为Redhat linuxext3文件系统。 服务器故障&初检&#xff1a; 服务器在运行过程中突然瘫痪&#xff0c;管理员对服务器中的raid进行检查后发现有两块硬盘…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?

Pod IP 的本质与特性 Pod IP 的定位 纯端点地址&#xff1a;Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址&#xff08;如 10.244.1.2&#xff09;无特殊名称&#xff1a;在 Kubernetes 中&#xff0c;它通常被称为 “Pod IP” 或 “容器 IP”生命周期&#xff1a;与 Pod …...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...