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

vscode 与 C++

具体流程的话,官方文档里都有的:C++ programming with Visual Studio Code

  1. 浏览器下载一个mingw64,解压,配置环境变量
  2. vscode里安装c++相关的插件
  3. 没了

第一步只看文字,可能有点抽象,相关视频:

关于mingw64的下载:【【教程】VScode中配置C语言/C++运行环境】 【精准空降到 01:32】

下载以后环境变量的配置:【安装mingw】 【精准空降到 05:32】

流程大概就是如此,这里主要记录遇到的一些问题。 

文件的解压

mingw64,下载以后,是个7z格式的压缩包,需要解压。(解压前约40MB,解压后约400MB)

windows原生好像解压不了这种格式的,所以这里装了下这个:

7-Zip

假如中间出了错

比如,写的是cpp,但是第一次选编译器的时候误选了gcc而不是g++,就可能会报错。

第一次会弹窗,让选一个编译器

怎么改回来?

官方文档:编译器只有第一次才会弹窗,让手动选编译器,后面就默认照着第一次选的来了。

所以,弹窗选择编译器只存在于首次运行,第一次选错了,它就会把一个错误的值当成默认值,后面也不会再弹窗让选择了,只能将错就错……

这个时候,可以删掉.vscode文件夹。默认的设置就在这个文件夹的tasks.json里,把它删了,默认的就不存在了,再运行就会弹窗提示重新选择编译器了。

和tasks.json相关的配置错误,应该都能这么搞吧。

关于编译器的介绍

mingw64是什么的缩写?简单介绍一下

  • Mingw-w64是一个基于MinGW(Minimalist GNU for Windows)的跨平台开发环境,用于在Windows操作系统上构建和编译GNU软件。它提供了一个完整的GNU环境,包括C、C++、Fortran等语言的编译器、调试器、库文件等。
  • Mingw-w64中的"mingw"表示"Minimalist GNU for Windows",而"w64"则表示它支持64位Windows操作系统。与传统的MinGW相比,Mingw-w64具有更好的兼容性和可移植性,支持更多的Windows API函数,并且可以更好地处理64位代码的编译和调试。
  • Mingw-w64的开发始于2000年,经过多年的发展和改进,已经成为一个稳定且广泛使用的跨平台开发工具。它为开发者提供了一个在Windows上构建和调试GNU软件的环境,使得开发者可以在Windows平台上进行开发,并生成可在多种操作系统上运行的可执行文件。

什么是gnu软件?

  • GNU软件是由自由软件基金会(FSF)开发和维护的一个操作系统,其名称来源于GNU(GNU's Not Unix)的缩写。GNU软件是一种与Unix系统兼容的类Unix操作系统,由一系列软件应用程序、开发人员工具以及一个分配资源并和硬件或内核通信的程序组成。
  • GNU软件包括许多知名的大型软件,如GNU Compiler Collection(GCC)、GNU Debugger(GDB)、GNU Binutils、GNU Hello等。其中,GCC是GNU系统的主要编译器,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。GDB是GNU系统的调试器,可以用于在程序运行时进行调试。GNU Binutils是一组二进制工具,包括ld、as、objcopy等,用于处理二进制文件。
  • GNU软件的一个重要特点是其自由软件许可证,这意味着用户可以自由地获取、使用、修改和分发该软件的源代码。此外,GNU软件还强调用户的自由和权利,包括对软件的支配权和使用权,以及保护用户的隐私和自由。
  • 总之,GNU软件是一个基于Unix开发设计,并与Unix兼容的类Unix操作系统,由自由软件基金会开发和维护。它包括许多重要的软件应用程序和开发工具,并且强调用户的自由和权利。

mingw64,gcc,g++,gdb,有什么关系?

  • mingw64:这是一款可以在Windows操作系统上编译和运行GNU程序的工具,它提供了一个GNU环境,包括GCC(GNU Compiler Collection)编译器、GNU binutils工具、GNU Hello程序等。mingw64可以让你在Windows上编译运行GNU程序,也可以让你的程序调用Windows的API函数。
  • gcc:GNU Compiler Collection(GCC)是一款自由软件,它提供了编译、汇编、链接等程序语言开发所需的各种工具。GCC支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada等。它是一款非常强大的编译器,可以编译各种类型的程序,包括桌面应用程序、服务器程序、嵌入式程序等。
  • g++:GNU g++是GCC编译器的一个C++编译器,它可以将C++源代码编译成可执行程序。g++支持C++语言的各种特性,包括类、模板、异常处理等。它是C++程序员的必备工具之一。
  • gdb:GNU Debugger(GDB)是一款源代码级别的调试器,它支持多种编程语言,包括C、C++、Objective-C、Fortran等。GDB可以让你在程序运行时进行调试,包括设置断点、单步执行、查看变量值等操作。它是程序开发人员调试程序的重要工具之一。

如何理解task.json里的args?

这个args,是从哪里冒出来的? ——结合命令行,就好理解了

命令行与参数

三分钟上手g++编译器_哔哩哔哩_bilibili

这里,命令行的-o参数的值设置的是test 

这个例子,也类似:

MinGW-w64 C/C++编译器下载和安装_mingw64_石凌风SLF的博客-CSDN博客

设置-o参数的值为mainCPPout

参数与json

vscode里,图形界面里点一下run就运行了,没用到命令行。怎么做的?命令行套壳。 比如给ffmpeg套图形界面的壳。

所以,命令行只是被套了个壳,看不见了,并不是不存在了,所以,命令行参数还是要指定的。

在哪里指定?在vscode的json文件里:

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "D:\\software\\mingw64\\bin\\g++.exe","args": [ // arguments,参数"-fdiagnostics-color=always","-g","${file}","-o",    // 参数名,表示这里是要给-o参数赋值,而不是-g参数或者其他的什么参数"${fileDirname}\\${fileBasenameNoExtension}.exe", // 想要给-o参数赋的具体值],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

后记

个人理解,仅供参考

相关文章:

vscode 与 C++

序 具体流程的话,官方文档里都有的:C programming with Visual Studio Code 浏览器下载一个mingw64,解压,配置环境变量vscode里安装c相关的插件没了 第一步只看文字,可能有点抽象,相关视频: …...

水果flstudio好用吗?中文版FL21最新版本如何下载

FL Studio21版是一款功能强大的音乐制作软件,广泛应用于电子音乐、流行音乐、电影配乐等领域。它提供了丰富多样的音频合成和编辑工具,使音乐制作变得更加灵活多样。无论是初学者还是专业音乐制作人,都可以通过直观的界面和丰富的音频特效来实…...

PHP is_array()函数详解,PHP判断是否为数组

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 is_array 一、基本使用二、空数组三、同时判断多个…...

面试题-React(三):什么是JSX?它与常规JavaScript有什么不同?

在React的世界中,JSX是一项引人注目的技术,它允许开发者在JavaScript中嵌套类似HTML的标签,用于描述UI组件的结构。本篇博客将通过丰富的代码示例,深入探索JSX语法,解析其在React中的用法和优势。 一、JSX基础语法 在…...

纯前端实现图片上传七牛云

首先安装下依赖: npm install qiniu-js crypto-js 然后封装一下 uploaderHelper.ts import * as qiniu from qiniu-js; // ts-ignore import CryptoJS from crypto-js// 请求接口上传图片 export function uploadFile(file: File) {const uptoken getToken(你的…...

win10+wsl2+Ubuntu20.2+Pycharm+WSL解释器

目的:创建一个ubuntu系统下的python解释器,作为win平台下的pycharm的解释器。 这样做的好处是可以直接在win系统里操作文件,相比于linux方便一点,而且也不用对wsl的子系统进行迁移。 一、安装前准备 1. 设置-Windows更新-window…...

EL与JSTL

目录 EL EL语法 EL运算符 JSTL JSTL标签分类 JSP脚本:代码结构混乱、脚本与HTML 混合易出错、代码不易维护。 EL表达式:优化程序代码,增加程序可读性。 EL EL语法 EL表达式 ${ EL 表达式 } EL操作符 操作符“ . ” 获取对象的属性&a…...

【Linux】动态库和静态库

动态库和静态库 软链接硬链接硬链接要注意 自定义实现一个静态库(.a)解决、使用方法静态库的内部加载过程 自定义实现一个动态库(.so)动态库加载过程 静态库和动态库的特点 软链接 命令:ln -s 源文件名 目标文件名 软链接是独立连接文件的,他…...

R语言:联合多指标的ROC曲线

# 加载数据和包rm(list=ls())library(pROC)library(ggplot2)setwd("C:/Users/syy/Desktop/MRI_lab/")data<- read.csv("test1.csv", header = T)data$Groups...

将一个树形结构的数据平铺成一个一维数组(vue3)

一、需求描述 由于自带组件库没有具体完善,无法实现像element-ui这种可以多选选择任意一级的选项,也就是说,选择父级的时候不会联动选择子级的全部 例如: 所以,才会出现【二、案例场景】类似的场景,可以用来多选 ,并可以实现单选父级而不关联子级,选择了将树状数据进…...

OSCS开源安全周报第 56 期:Apache Airflow Spark Provider 任意文件读取漏洞

本周安全态势综述 OSCS 社区共收录安全漏洞 3 个&#xff0c;公开漏洞值得关注的是 Apache NiFi 连接 URL 验证绕过漏洞(CVE-2023-40037)、PowerJob 未授权访问漏洞(CVE-2023-36106)、Apache Airflow Spark Provider 任意文件读取漏洞(CVE-2023-40272)。 针对 NPM 、PyPI 仓库…...

CleanMyMac2024永久版Mac清理工具

Mac电脑作为相对封闭的一个系统&#xff0c;它会中毒吗&#xff1f;如果有一天Mac电脑产生了疑似中毒或者遭到恶意不知名攻击的现象&#xff0c;那又应该如何从容应对呢&#xff1f;这些问题都是小编使用Mac系统一段时间后产生的疑惑&#xff0c;通过一番搜索研究&#xff0c;小…...

软考高级系统架构设计师(一)计算机硬件

【原文链接】软考高级系统架构设计师&#xff08;一&#xff09;计算机硬件 1.1 计算机硬件组成 1.1.1 计算机的基本硬件组成 运算器控制器存储器输入设备输出设备 1.1.2 中央处理单元&#xff08;CPU&#xff09; 中央处理单元&#xff08;CPU&#xff09;的组成 运算器…...

bat文件中自定义cmd命令;执行完退出命令提示符窗口

1. bat中启动cmd命令 start cmd /k " cmd中命令行里自定义的命令 " 2.编写规则 start cmd /k "命令1 & 命令2 & 命令3" (无论前面命令是否成功, 后面都会执行start cmd /k "命令1 && 命令2 && 命令3 " (仅…...

深度学习的经典算法的论文、解读和代码实现

文章目录 CNN网络的经典算法LeNet-5AlexNetVGGInceptionInception-v1(GoogLeNet)BN-Inception ResNetR-CNNR-CNNFast R-CNNFaster R-CNN YOLOYOLO v1YOLO v2YOLO v3YOLO v4 RNN的经典算法RNNGRULSTMEncoder-DecoderAttentionTransformer CNN网络的经典算法 LeNet-5 来源论文&…...

开源TTS+gtx1080+cuda11.7+conda+python3.9吊打百度TTS

一、简介 开源项目&#xff0c;文本提示的生成音频模型 https://github.com/suno-ai/bark Bark是由Suno创建的基于变换器的文本到音频模型。Bark可以生成极为逼真的多语种演讲以及其他音频 - 包括音乐、背景噪音和简单的声音效果。该模型还可以产生非言语沟通&#xff0c;如…...

【私有GPT】CHATGLM-6B部署教程

【私有GPT】CHATGLM-6B部署教程 CHATGLM-6B是什么&#xff1f; ChatGLM-6B是清华大学知识工程和数据挖掘小组&#xff08;Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University&#xff09;发布的一个开源的对话机器人。根据官方介绍&#xff0c;这是…...

基于“R语言+遥感“水环境综合评价方法教程

详情点击链接&#xff1a;基于"R语言遥感"水环境综合评价方法教程 一&#xff1a;R语言 1.1 R语言特点&#xff08;R语言&#xff09; 1.2 安装R&#xff08;R语言&#xff09; 1.3 安装RStudio&#xff08;R语言&#xff09; &#xff08;1&#xff09;下载地址…...

To_Heart—题解——P6234 [eJOI2019] T形覆盖

link. 突然很想写这篇题解。虽然题目不算难。 考场只有30分是为什么呢&#xff1f;看来是我没有完全理解这道题目吧&#xff01; 首先很明显的转换是&#xff0c;把 T 型覆盖看成十字形&#xff0c;再考虑最后减去某一块的贡献。 然后然后直接往原图上面放十字形!对于每一个…...

[软件工具]精灵标注助手目标检测数据集格式转VOC或者yolo

有时候我们拿到一个数据集发现是xml文件格式如下&#xff1a; <?xml version"1.0" ?> <doc><path>C:\Users\Administrator\Desktop\test\000000000074.jpg</path><outputs><object><item><name>dog</name>…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

React hook之useRef

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

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...