VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程
引言+劝退
VSCode,全称为Visual Studio Code,是由微软开发的一款轻量级,跨平台的代码编辑器。大家能来搜用VSCode配置c/c++,想必也知道VSCode的强大,可以手握一个VSCode同时编写如C,C++,C#,Java,python等等语言的代码。得益于在VSCode上可以下载很多不同种类的插件,可以给vscode添加很多扩展功能,如代码高亮美化,代码补全和代码检查等。
在今天的内容开始之前,我想先劝退一波。
如果你是刚刚接触编程或是使用计算机并不熟练,我强烈建议:
不要碰VSCode!!!
不要碰VSCode!!!
不要碰VSCode!!!
VSCode的环境配置和文件操作相比于直接下载集成开发环境,对于初学者实在是一种灾难。
要学习C/C++,可以去下一个Visual Studio,如果嫌占内存太大,不写什么大工程,可以去下一个Dev-C++
要写Java,去找IntelliJ IDEA
要写python,去找pycharm
总之,初学者建议先熟悉下计算机和编程再来搞VSCode,当初还是小白的我弄了个VSCode的就开始配环境,后期一大堆非程序问题搞得不得不下个集成的环境再学。
能看到这里,说明你已经下定了学习如何在VSCode上写C/C++代码的决心,那么现在就开始我们的内容吧!
VSCode的下载和安装
下载vscode直接去搜就可以,这里我附上一个下载链接吧
Visual Studio Code - Code Editing. Redefined

这里根据自己的电脑系统选择,我的电脑是windows系统,选择stable版
应用商城里面自带的vscode其实也是可下的
下好之后,我们打开安装包,开始安装

这里下一步其实没什么可说的,路径那里放到哪都无所谓
下面这个界面注意一下,都选上

最后就是安装完成了
在打开VSCode之后,你会发现,里面都是英文,那是因为你还没安装中文插件

在组件里,搜索Chinese,下载最上面那个
右下角会弹出这样一个框

当你点Restart重启后就已经是熟悉的中文啦!
VSCode配置C/C++开发环境
安装MinGW
VSCode安装好之后,我们还是要了解到,VSCode毕竟是一个高级的编辑器,只能用来写C/C++代码,不能直接编译代码。所以,如果我们要能使用VSCode搭建C/C++的编译和调试环境,还必须要有编译器。为了方便,我们使用MinGW-w64,MinGW-w64是移植到windows平台的一个gcc编译器,用起来很方便。
下载MinGW-w64的话,下面是下载地址
MinGW下载地址

在这个界面,不要直接点下载,先往下拖动,建议下载这个

点击之后,正常情况下,就应该开始正常下载了。
MinGW-w64下载好之后,需要先解压缩

最后会解压出一个文件夹,建议将文件夹放到一个容易管理的地方,这里我放到C盘的根目录下
C:\mingw64

配置MinGw
在windows电脑上,按win+s快捷键,或者直接在搜索框中搜:环境变量,就可以看到:

点击环境变量

找到系统变量中path路径,点击打开

在最后添加上C:\mingw64\bin (放在了不同的路径,只要保证最后是\mingw64\bin就行)这个路径

最后连续点击确定三次层层退出
这样mingw编译器套件基本上就配好了
接下来,我们需要安装一个C/C++插件
我们直接搜索c/c++,选择最上面那个直接安装上就行

安装完之后,重启一下,VSCode配置C/C++环境这一块的工作就算彻底完成。
在VSCode上编写C/C++代码并编译成功
VSCode上写代码首先需要打开文件夹,这样也可以方便管理代码和编译器产生的可执行程序和VSCode生成的配置文件(总之就是很有好处)。在写代码前,先要考虑好把代码放在什么地方管理。
这里我创建一个名字叫test_vscode的文件夹,在我的C根目录当中
我们要保证创建的文件夹中的路径是没有中文名的,不然后续会有一系列问题,就比如调试莫名报错之类
用中文名调试时的报错(其中马赛克位置是中文):


用VSCode打开此文件夹


然后文件夹就被顺利打开了
编写C/C++代码

编译当前代单个文件代码
在我们编译代码前需要创建下图黄框内的两个文件

第一个文件的创建方式,在中间搜索框打>,然后找C/C++编译配置

这里进到这样一个界面

这里选择编译器路径

再次根据图片选择

这时关闭这个界面就会发现,下面这些已经在不知不觉间生成了

//c_cpp_properties.json
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.22621.0","compilerPath": "C:/mingw64/bin/gcc.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "gcc-x64"},{"name": "C++","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.22621.0","compilerPath": "C:/mingw64/bin/g++.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}
这份c_cpp_properties.json其实也不用自己创建,把我的直接复制粘贴过去也行 ,这个对C/C++都适用
这时我们来创建第二个文件tasks.json
在代码文件下选择终端里的配置任务


在做出选择之后,第二个文件就配置完毕了,现在我们来编译一下代码
在终端中选择运行生成任务

这里的gcc和g++怎么选不用我说了吧

选择之后,你会发现在test.c下面多了一个可执行文件test.exe

此时 Ctrl + `
同时终端中输入.\test.exe运行代码回车就开始运行了

同样的方式也可以编写c++代码
唯一要注意的是,C++在创建第一个文件时,建议改一下配置名称,如果复制粘贴了我的第一个文件就不用管了

点击确定,然后其他正常生成文件

编译多个文件代码
这里需要改一下.vscode中tasks.json文件的一些内容
图中我标了注释的地方就是需要改动的地方,然后这是改动后的文件

//tasks.json
{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "C:\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always","-g","${workspaceFolder}/*", //${file}"-o","${workspaceFolder}\\${workspaceRootFolderName}.exe" //${fileDirname}\\${fileBasenameNoExtension}.exe],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": "build","detail": "编译器: \"C:\\mingw64\\bin\\g++.exe\""}]
}
//test.cpp
#include<iostream>
#include"add.h"
using namespace std;int main()
{int a = 10;int b = 15;int c = Add(a,b);cout << a<< " " << b << endl;cout << c;return 0;
}
//add.h
#pragma
int Add(int x,int y);
//add.cpp
#include"add.h"int Add(int x,int y)
{return x + y;
}
最后编译器将文件夹所有文件都编译链接生成一个以文件夹命名的 .exe 文件


下面是运行

VSCode的调试
调试这里另外需要一个文件,launch.json文件
创建launch.json文件

点击之后会弹出一个窗口选择,这里我们一定要选择C++(GDB/LLDB)

这时就会生成一个launch.json文件,这时候文件里几乎什么都没有,我们点击右下角的添加配置

选择第三个gdb启动

其中,下面标出的这两个位置是需要修改的

下面是修改后的文件
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}\\${workspaceRootFolderName}.exe", //输入程序名称(也就是需要调试的文件),例如 ${workspaceFolder}/a.exe"args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", //调试的工具(mingw,bin中有gdb) /path/to/gdb"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}
调试运行
修改之后,进行编译,生成一份test_vscode.exe之后就可以开始调试
此时我们就可以直接按 F5 开始调试,F9打断点,F10逐过程(遇到函数当成一条语句跳过),F11逐语句(遇到函数跳转到函数内部按语句一步步走)

结语
关于VSCode上搭建C/C++开发环境的内容,到这里就结束了,这里博主感叹一下,VSCode真的挺强大的,作为一个编辑器,可以通过和编译器链接成为开发环境,将环境配置好的话,在这上面写代码似乎也是个不错的选择。大家有任何疑问,欢迎在评论区中提出,本篇博客有任何问题和错误也欢迎来和博主讨论,真心希望能和大家一起进步。最后,如果本篇博客对你有帮助的话,能不能给博主一个三连啊!感谢大家的支持♥
相关文章:
VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程
引言劝退 VSCode,全称为Visual Studio Code,是由微软开发的一款轻量级,跨平台的代码编辑器。大家能来搜用VSCode配置c/c,想必也知道VSCode的强大,可以手握一个VSCode同时编写如C,C,C#ÿ…...
[渗透教程]-013-嗅探工具-wireshark操作
文章目录 tor下载wireshark抓包类型启动场景实战tor下载 tor下载链接 zlibary暗网地址 2681506@gmail.com YanErrol123@wireshark Wireshark是网络封包分析软件,可以抓包.可以 使用winpcap与网卡直接进行数据交换.作用: 网络管理员使用wireshark来检测网络问题,网络工程师使用…...
NLP Seq2Seq模型
🍨 本文为[🔗365天深度学习训练营学习记录博客🍦 参考文章:365天深度学习训练营🍖 原作者:[K同学啊 | 接辅导、项目定制]\n🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/mi…...
如何在 Linux 上使用 dmesg 命令
文章目录 1. Overview2.ring buffer怎样工作?3.dmesg命令4.移除sudo需求5. 强制彩色输出6.使用人性化的时间戳7.使用dmesg的人性化可读时间戳8.观察实时event9.检索最后10条消息10.搜索特定术语11.使用Log Levels12.使用Facility Categories13.Combining Facility a…...
WPF的DataGrid设置标题头
要设置DataGrid标题头的分割线、背景色和前景色等属性,您可以使用DataGrid的样式和模板来自定义标题头的外观。下面是详细解释以及示例代码: 分割线设置: 您可以使用DataGrid.ColumnHeaderStyle样式中的BorderThickness和BorderBrush属性来设…...
【软考】UML中的图之通信图
目录 1. 说明2. 图示3. 特性4. 例题4.1 例题1 1. 说明 1.通信图强调收发消息的对象的结构组织2.早期版本叫做协作图3.通信图强调参加交互的对象和组织4.首先将参加交互的对象作为图的顶点,然后把连接这些对象的链表示为图的弧,最后用对象发送和接收的消…...
为什么ChatGPT预训练能非常好地捕捉语言的普遍特征和模式
ChatGPT能够非常好地捕捉语言的普遍特征和模式,主要得益于以下几个方面的原因: 大规模语料库:ChatGPT的预训练是在大规模文本语料库上进行的,这些语料库涵盖了来自互联网、书籍、文章、对话记录等多种来源的丰富数据。这种大规模的…...
如何安装ProtoBuf环境
1 🍑下载 ProtoBuf🍑 下载 ProtoBuf 前⼀定要安装依赖库:autoconf automake libtool curl make g unzip 如未安装,安装命令如下: Ubuntu ⽤⼾选择: sudo apt-get install autoconf automake libtool cur…...
C语言 vs Rust应该学习哪个?
C语言 vs Rust应该学习哪个? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&am…...
IT廉连看——Uniapp——配置文件pages
IT廉连看——Uniapp——配置文件pages [IT廉连看] 本堂课主要为大家介绍pages.json这个配置文件 一、打开官网查看pages.json可以配置哪些属性。 下面边写边讲解 新建一个home页面理解一下这句话。 以下一些页面的通用配置 通用设置里我们可以对导航栏和状态栏进行一些设…...
服务器上部署WEb服务方法
部署Web服务在服务器上是一个比较复杂的过程。这不仅仅涉及到配置环境、选择软件和设置端口,更有众多其它因素需要考虑。以下是在服务器上部署WEb服务的步骤: 1. 选择服务器:根据项目规模和预期访问量,选择合适的服务器类型和配置…...
设计模式:模版模式
模板模式(Template Pattern)是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤的具体实现延迟到子类中。模板模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 在模板模式中,将算法的…...
pikachu之特殊注入之搜索型注入、xx型注入、insert/update注入、delete注入、宽字节注入
一步一脚印!!! 补充:此处为什么不写http请求头注入,因为该注入类型只是换了注入点,语句其他根本没有什么变化 1.搜索型 先尝试输入常用payload: 1 or 11 #。 已经有回显 我们在查看提示 我们…...
docker构建hyperf环境
一,构建hyperf 镜像 官网git https://github.com/hyperf/hyperf-docker 使用dockerfile构建镜像 根据需要这里我使用8.1 swoole版本的镜像 在/home/hyperfdocker 目录中新建一个Dockerfile文件,将这个git上的Dockerfile内容复制粘贴进去 docker build…...
WPF常用mvvm开源框架介绍 vue的mvvm设计模式鼻祖
WPF(Windows Presentation Foundation)是一个用于构建桌面应用程序的.NET框架,它支持MVVM(Model-View-ViewModel)架构模式来分离UI逻辑和业务逻辑。以下是一些常用的WPF MVVM开源框架: Prism Prism是由微软…...
HTML <script>元素的10个属性
将javascrip插入HTML的主要方法是使用<script>元素,这个元素是网景公司(Netscape)创造出来的,script 元素所属类型因其用法而异。位于 head 元素中的 script 元素属于元数据元素,位于其他元素(如 bod…...
NX二次开发:ListingWindow窗口的应用
一、概述 在NX二次开发的学习中,浏览博客时发现看到[社恐猫]和[王牌飞行员_里海]这两篇博客中写道有关信息窗口内容的打印和将窗口内容保存为txt,个人人为在二次开发项目很有必要,因此做以下记录。 ListingWindow信息窗口发送信息四种位置类型 设置Listi…...
设计模式-结构型模式-外观模式
外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP] 首先,定义子系统的各个组件接口和具体实现类: // 子系统组件接…...
C++学习第四天(类与对象下)
1、构造函数的其他知识 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值 构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函…...
【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑
之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践,主要关注在MetaGPT入门和单智能体部分(系列文章附在文末,感兴趣的可以看下)。现在新的教程来了,新教程主要关注多智能体部分。 本系列文章跟随《M…...
QED正交编码器解码库:零中断、高鲁棒性嵌入式解码方案
1. QED:嵌入式系统中高精度正交编码器解码器库深度解析1.1 正交编码器在嵌入式控制中的工程地位正交编码器(Quadrature Encoder)是运动控制系统中不可或缺的位置与速度感知单元,广泛应用于伺服电机、步进电机、机器人关节、数控机…...
全网最全CV模型盘点:13类算法、85种变体详解
全网最全CV模型盘点:13类算法、85种变体详解做CV的都知道,标注数据成本太高。为了省钱,研究者开始用各种野路子:用没标注的数据、用爬取的图文、用多模态数据来预训练模型,再用对比学习、掩码重建这些方法让模型学会各…...
算法岗面试指南:深度学习核心问题一网打尽
算法岗面试指南:深度学习核心问题一网打尽 本文详细解析了算法岗面试指南:深度学习核心问题一网打尽,内容如下: params_grad evaluate_gradient(loss_function, data, params) params params - learning_rate * params_grad优点…...
刚考上研究生的小白怎么写综述?
除了传统的写作方法,我们需要的是一种能够将传统数周的文献调研压缩至分钟级的高效解决方案,这便是智能化科研工具的核心价值所在。 MedPeer基于国内科研现状,打造出了Deep Search这款智能文献检索与分析工具。它覆盖了3亿篇文献数据库&…...
腾讯云轻量服务器一键部署OpenClaw教程
本文主要分享如何利用腾讯云轻量应用服务器,搭建个人可用的AI应用,全程聚焦技术实操,适合零基础个人开发者、AI爱好者参考,步骤清晰可落地,兼顾稳定性和实用性。 一、选择腾讯云搭建个人AI应用的核心原因(客…...
【JavaScript高级编程】拆解函数流水线 上加
一、什么是setuptools? setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你: 定义 Python 包的元数据(如名称、版本、作者等)。 声明包的依赖项,确保你的包能够正确运行。 构建源代码分发包&…...
NotoCJK:为Android设备带来专业级中文显示体验
NotoCJK:为Android设备带来专业级中文显示体验 【免费下载链接】notocjk NotoSansCJK & NotoSerifCJK full weight patch for Android devices. 项目地址: https://gitcode.com/gh_mirrors/no/notocjk 想要让你的Android手机或平板拥有更美观、更专业的中…...
基于STM32LXXX的数字电位器(MAX5400EKA+T)驱动应用程序设计
一、简介: MAX5400EKA+T 是 Maxim Integrated(现为 Analog Devices)推出的一款 256抽头、单路、线性变化的数字电位器。 MAX5400 是一款超小封装(SOT-23-8)的数字电位器,非常适合对PCB空间有严格要求的便携式设备。它通过标准的 SPI 接口与 STM32Lxxx 系列 MCU 通信…...
skill炼化真人?我刷了三天短视频,发现自己再也没法好好看完一部电影了
说实话,这事我想了很久,一直不敢写。因为太扎心了。春节那会儿,我花了八十多块钱买票,坐进电影院。开场不到二十分钟,我下意识地掏出手机,刷了刷抖音。等回过神来,电影已经放到快一半了。我努力…...
Mem Reduct内存管理工具:轻量级实时监控与优化技术深度解析
Mem Reduct内存管理工具:轻量级实时监控与优化技术深度解析 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct …...
