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

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

75d4e6dfe50842a6a81b6526c7fc8bff.jpeg

这里根据自己的电脑系统选择,我的电脑是windows系统,选择stable版

应用商城里面自带的vscode其实也是可下的

下好之后,我们打开安装包,开始安装

edf94d4a89ef41c6a3f3c055758578b4.jpeg

这里下一步其实没什么可说的,路径那里放到哪都无所谓

下面这个界面注意一下,都选上

d84a18cd9e8d4320acb45555e5df3546.jpeg

最后就是安装完成了

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

f821dbc1bc194a06b0409098e081318a.png

在组件里,搜索Chinese,下载最上面那个

右下角会弹出这样一个框

aed9c8296f874f7bbe2c2f2e1c9b32c5.jpeg

当你点Restart重启后就已经是熟悉的中文啦!

VSCode配置C/C++开发环境

安装MinGW

VSCode安装好之后,我们还是要了解到,VSCode毕竟是一个高级的编辑器,只能用来写C/C++代码,不能直接编译代码。所以,如果我们要能使用VSCode搭建C/C++的编译和调试环境,还必须要有编译器。为了方便,我们使用MinGW-w64,MinGW-w64是移植到windows平台的一个gcc编译器,用起来很方便。

下载MinGW-w64的话,下面是下载地址

MinGW下载地址

978e44aab69d43a7aff9a7af94037add.png

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

3fc6b2fd7e5b4f5a9f26f915f1399a1c.png

点击之后,正常情况下,就应该开始正常下载了。

MinGW-w64下载好之后,需要先解压缩

021bba8f8a684116b88cd87628ab7ef4.png

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

C:\mingw64

592a4d39e3b34566b906f2f50810708f.png

配置MinGw

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

3a41008af81b49d7b09af88f76d98243.png

点击环境变量

e3e54e37515043eda6cbb21fff47362d.jpeg

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

5b7b50c4fa90426dabbf0f371efe81de.jpeg

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

39c3191581b44431b31dc956d54c8ff3.jpeg

最后连续点击确定三次层层退出

这样mingw编译器套件基本上就配好了

接下来,我们需要安装一个C/C++插件

我们直接搜索c/c++,选择最上面那个直接安装上就行

55401828ece84d02a5a3463ebd6b6468.png

安装完之后,重启一下,VSCode配置C/C++环境这一块的工作就算彻底完成。

在VSCode上编写C/C++代码并编译成功

VSCode上写代码首先需要打开文件夹,这样也可以方便管理代码和编译器产生的可执行程序和VSCode生成的配置文件(总之就是很有好处)。在写代码前,先要考虑好把代码放在什么地方管理。

这里我创建一个名字叫test_vscode的文件夹,在我的C根目录当中

我们要保证创建的文件夹中的路径是没有中文名的,不然后续会有一系列问题,就比如调试莫名报错之类

用中文名调试时的报错(其中马赛克位置是中文):

5a657461dc5c40afb76e7b213cfb8777.png

fd33f0c79b3d4a86b61796ec280f6dea.png

用VSCode打开此文件夹

f61e91d1801d4465b4fe73d10997555e.png

e5b19bff44654b4eb9f1d86605edb1aa.png

然后文件夹就被顺利打开了 

编写C/C++代码

1db7f3ddbbf74f6db8edb59495f767c6.png

编译当前代单个文件代码

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

94108f4b4ad74fed9e31608b92c1e7c3.png

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

bc1933ca0f6b40839efac68b01f4d9a1.png

这里进到这样一个界面

0ceea35b80454298912cd896e1367331.png

这里选择编译器路径

35d57aa83a4f40758af154f5f58baeeb.png

再次根据图片选择

9abb1a71b18345d6a1ae05d0c9eee829.png

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

e270948990a64068a133483a4ea1395f.png

//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

在代码文件下选择终端里的配置任务

c19fdc5ec52142c6a619ec037706472d.png

6abd83291d53429aaefc6c207b4f7a4a.png

在做出选择之后,第二个文件就配置完毕了,现在我们来编译一下代码

在终端中选择运行生成任务

36a499db70fc4e7daf5f37321afdd9be.png

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

cd0580953a3542aca2402c8aeea9b1af.png

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

002abc27586b47e299a2c328c8e69bdf.png

此时 Ctrl + `

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

78b9654b35774313ac41895a9471d4a0.png

同样的方式也可以编写c++代码

唯一要注意的是,C++在创建第一个文件时,建议改一下配置名称,如果复制粘贴了我的第一个文件就不用管了

97885a5eb5f243678dea945e04978bb2.png

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

e89a3781f43d43518cca72d7e7cb18e7.png

编译多个文件代码

这里需要改一下.vscode中tasks.json文件的一些内容

图中我标了注释的地方就是需要改动的地方,然后这是改动后的文件

f986cc9c7ffc4ec4baed36f0aad10817.png

//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 文件 

23ec3376c0cb4e72874e293a43ab934b.png

aea2b92f5502479d9ac28d1499a22416.png

下面是运行 

9ed15d0b9a0e4a5e8cf71344a15159fc.png

VSCode的调试

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

创建launch.json文件

dfd0c180111f4a718ea15b61d3c121dc.png

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

32f8a40dfa8c487484af984f8157707f.png

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

0fe981ed3d7a4317a961dabce28bc5f6.png

选择第三个gdb启动

38a93fbfa8e4409eb95c0d9962c496f9.png

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

73bc7657b60d479eb246727264cb8237.jpeg

下面是修改后的文件 

{// 使用 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逐语句(遇到函数跳转到函数内部按语句一步步走)

e807f8d0e0244ac4a02e37e5835d5be9.png

结语

 关于VSCode上搭建C/C++开发环境的内容,到这里就结束了,这里博主感叹一下,VSCode真的挺强大的,作为一个编辑器,可以通过和编译器链接成为开发环境,将环境配置好的话,在这上面写代码似乎也是个不错的选择。大家有任何疑问,欢迎在评论区中提出,本篇博客有任何问题和错误也欢迎来和博主讨论,真心希望能和大家一起进步。最后,如果本篇博客对你有帮助的话,能不能给博主一个三连啊!感谢大家的支持♥

 

相关文章:

VSCode上搭建C/C++开发环境(vscode配置c/c++环境)Windows系统---保姆级教程

引言劝退 VSCode&#xff0c;全称为Visual Studio Code&#xff0c;是由微软开发的一款轻量级&#xff0c;跨平台的代码编辑器。大家能来搜用VSCode配置c/c&#xff0c;想必也知道VSCode的强大&#xff0c;可以手握一个VSCode同时编写如C&#xff0c;C&#xff0c;C#&#xff…...

[渗透教程]-013-嗅探工具-wireshark操作

文章目录 tor下载wireshark抓包类型启动场景实战tor下载 tor下载链接 zlibary暗网地址 2681506@gmail.com YanErrol123@wireshark Wireshark是网络封包分析软件,可以抓包.可以 使用winpcap与网卡直接进行数据交换.作用: 网络管理员使用wireshark来检测网络问题,网络工程师使用…...

NLP Seq2Seq模型

&#x1f368; 本文为[&#x1f517;365天深度学习训练营学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制]\n&#x1f680; 文章来源&#xff1a;[K同学的学习圈子](https://www.yuque.com/mi…...

如何在 Linux 上使用 dmesg 命令

文章目录 1. Overview2.ring buffer怎样工作&#xff1f;3.dmesg命令4.移除sudo需求5. 强制彩色输出6.使用人性化的时间戳7.使用dmesg的人性化可读时间戳8.观察实时event9.检索最后10条消息10.搜索特定术语11.使用Log Levels12.使用Facility Categories13.Combining Facility a…...

WPF的DataGrid设置标题头

要设置DataGrid标题头的分割线、背景色和前景色等属性&#xff0c;您可以使用DataGrid的样式和模板来自定义标题头的外观。下面是详细解释以及示例代码&#xff1a; 分割线设置&#xff1a; 您可以使用DataGrid.ColumnHeaderStyle样式中的BorderThickness和BorderBrush属性来设…...

【软考】UML中的图之通信图

目录 1. 说明2. 图示3. 特性4. 例题4.1 例题1 1. 说明 1.通信图强调收发消息的对象的结构组织2.早期版本叫做协作图3.通信图强调参加交互的对象和组织4.首先将参加交互的对象作为图的顶点&#xff0c;然后把连接这些对象的链表示为图的弧&#xff0c;最后用对象发送和接收的消…...

为什么ChatGPT预训练能非常好地捕捉语言的普遍特征和模式

ChatGPT能够非常好地捕捉语言的普遍特征和模式&#xff0c;主要得益于以下几个方面的原因&#xff1a; 大规模语料库&#xff1a;ChatGPT的预训练是在大规模文本语料库上进行的&#xff0c;这些语料库涵盖了来自互联网、书籍、文章、对话记录等多种来源的丰富数据。这种大规模的…...

如何安装ProtoBuf环境

1 &#x1f351;下载 ProtoBuf&#x1f351; 下载 ProtoBuf 前⼀定要安装依赖库&#xff1a;autoconf automake libtool curl make g unzip 如未安装&#xff0c;安装命令如下&#xff1a; Ubuntu ⽤⼾选择&#xff1a; sudo apt-get install autoconf automake libtool cur…...

C语言 vs Rust应该学习哪个?

C语言 vs Rust应该学习哪个&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&am…...

IT廉连看——Uniapp——配置文件pages

IT廉连看——Uniapp——配置文件pages [IT廉连看] 本堂课主要为大家介绍pages.json这个配置文件 一、打开官网查看pages.json可以配置哪些属性。 下面边写边讲解 新建一个home页面理解一下这句话。 以下一些页面的通用配置 通用设置里我们可以对导航栏和状态栏进行一些设…...

服务器上部署WEb服务方法

部署Web服务在服务器上是一个比较复杂的过程。这不仅仅涉及到配置环境、选择软件和设置端口&#xff0c;更有众多其它因素需要考虑。以下是在服务器上部署WEb服务的步骤&#xff1a; 1. 选择服务器&#xff1a;根据项目规模和预期访问量&#xff0c;选择合适的服务器类型和配置…...

设计模式:模版模式

模板模式&#xff08;Template Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一个操作中的算法骨架&#xff0c;将一些步骤的具体实现延迟到子类中。模板模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。 在模板模式中&#xff0c;将算法的…...

pikachu之特殊注入之搜索型注入、xx型注入、insert/update注入、delete注入、宽字节注入

一步一脚印&#xff01;&#xff01;&#xff01; 补充&#xff1a;此处为什么不写http请求头注入&#xff0c;因为该注入类型只是换了注入点&#xff0c;语句其他根本没有什么变化 1.搜索型 先尝试输入常用payload&#xff1a; 1 or 11 #。 已经有回显 我们在查看提示 我们…...

docker构建hyperf环境

一&#xff0c;构建hyperf 镜像 官网git https://github.com/hyperf/hyperf-docker 使用dockerfile构建镜像 根据需要这里我使用8.1 swoole版本的镜像 在/home/hyperfdocker 目录中新建一个Dockerfile文件&#xff0c;将这个git上的Dockerfile内容复制粘贴进去 docker build…...

WPF常用mvvm开源框架介绍 vue的mvvm设计模式鼻祖

WPF&#xff08;Windows Presentation Foundation&#xff09;是一个用于构建桌面应用程序的.NET框架&#xff0c;它支持MVVM&#xff08;Model-View-ViewModel&#xff09;架构模式来分离UI逻辑和业务逻辑。以下是一些常用的WPF MVVM开源框架&#xff1a; Prism Prism是由微软…...

HTML <script>元素的10个属性

将javascrip插入HTML的主要方法是使用<script>元素&#xff0c;这个元素是网景公司&#xff08;Netscape&#xff09;创造出来的&#xff0c;script 元素所属类型因其用法而异。位于 head 元素中的 script 元素属于元数据元素&#xff0c;位于其他元素&#xff08;如 bod…...

NX二次开发:ListingWindow窗口的应用

一、概述 在NX二次开发的学习中&#xff0c;浏览博客时发现看到[社恐猫]和[王牌飞行员_里海]这两篇博客中写道有关信息窗口内容的打印和将窗口内容保存为txt,个人人为在二次开发项目很有必要&#xff0c;因此做以下记录。 ListingWindow信息窗口发送信息四种位置类型 设置Listi…...

设计模式-结构型模式-外观模式

外观模式&#xff08;Facade&#xff09;&#xff0c;为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。[DP] 首先&#xff0c;定义子系统的各个组件接口和具体实现类&#xff1a; // 子系统组件接…...

C++学习第四天(类与对象下)

1、构造函数的其他知识 构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值 构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量的初始化&#xff0c;构造函…...

【AI Agent系列】【MetaGPT多智能体学习】0. 环境准备 - 升级MetaGPT 0.7.2版本及遇到的坑

之前跟着《MetaGPT智能体开发入门课程》学了一些MetaGPT的知识和实践&#xff0c;主要关注在MetaGPT入门和单智能体部分&#xff08;系列文章附在文末&#xff0c;感兴趣的可以看下&#xff09;。现在新的教程来了&#xff0c;新教程主要关注多智能体部分。 本系列文章跟随《M…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

【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…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...