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

news2024/11/14 15:12:58

引言+劝退

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真的挺强大的,作为一个编辑器,可以通过和编译器链接成为开发环境,将环境配置好的话,在这上面写代码似乎也是个不错的选择。大家有任何疑问,欢迎在评论区中提出,本篇博客有任何问题和错误也欢迎来和博主讨论,真心希望能和大家一起进步。最后,如果本篇博客对你有帮助的话,能不能给博主一个三连啊!感谢大家的支持♥

 

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

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

相关文章

网神 SecGate 3600 防火墙 sys_export_conf_local_save 文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

PMP证书的含金量如何?

PMP含金量更多的是“敲门砖”作用&#xff0c;公司招聘的门槛&#xff0c;现在坐项目的大部分都需要PMP/NPDP证书。 当然现在PMP管理模式也很热门&#xff0c;对企业发展很有利&#xff0c;各大企业都有引进改良应用在公司的项目上&#xff0c;之前在校友群里面大家在讨论PMP …

springboot+vue+mysql项目使用的常用注解

实体类常用注解 Data Data 是一个 Lombok 提供的注解&#xff0c;使用 Data 注解可以简化代码&#xff0c;使代码更加简洁易读。 作用&#xff1a;自动为类生成常用的方法&#xff0c;包括 getter、setter、equals、hashCode 和 toString 等需要加Lombok的依赖 <depende…

中小企业“数智未来”行动|ZStack Cloud 荣获“推荐方案”奖

2月29日&#xff0c;以“数智未来 共创数字时代新篇章”为主题的中小企业“数智未来”行动在京成功举办&#xff0c;本次活动由中央广播电视总台央视频和中国中小企业协会作为联合观察单位&#xff0c;带来了一系列帮助中小企业成就业务新价值和数智化升级的优秀产品和方案&…

20240301-2-ZooKeeper面试题(二)

11. Chroot 特性 3.2.0 版本后&#xff0c;添加了 Chroot 特性&#xff0c;该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot&#xff0c;那么该客户端对服务器的任何操作&#xff0c;都将会被限制在其自己的命名空间下。 通过设置 Chroot&#xff…

Javaweb之SpringBootWeb案例之 Bean管理的Bean作用域详细的解析

2.2 Bean作用域 在前面我们提到的IOC容器当中&#xff0c;默认bean对象是单例模式(只有一个实例对象)。那么如何设置bean对象为非单例呢&#xff1f;需要设置bean的作用域。 在Spring中支持五种作用域&#xff0c;后三种在web环境才生效&#xff1a; 作用域说明singleton容器…

【前端素材】推荐优质后台管理系统网页Hyper平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功能。后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;通常由管理员使…

SLAM运动模型

经典的SLAM模型是由一个运动方程和一个观测方程构成的&#xff0c;如下图所示&#xff1a; 其中&#xff1a;x_k为机器人的状态&#xff0c;z为机器人的观测数据&#xff0c;u_k为控制数据&#xff0c;y_j观测点&#xff0c;w和v分别为运动噪声和观测噪声。f为运动方程&#xf…

解决方案:win11自带的截图工具无反应,快捷键(win+shift+S)同样无法使用

问题描述 截图时某次开始突然无法使用 winshiftS 调用win11自带的“截图工具”截图了&#xff0c;我机器的表现是&#xff1a; 使用该快捷键无法调用截图工具&#xff0c;鼠标旁边会有蓝色小圈圈转一下&#xff0c;但也就是转一下&#xff1b;在搜索框手动搜索 “截图工具” …

递归算法题练习(数的计算、带备忘录的递归、计算函数值)

目录 递归的介绍 递归如何实现 递归和循环的比较 例题: &#xff08;一、斐波那契数列&#xff0c;带备忘录的递归&#xff09; 如果直接使用递归&#xff0c;难以算出结果&#xff0c;需要优化 优化方法&#xff1a;带备忘录的递归 &#xff08;二、数的计算&#xff09…

【Linux进程】进程状态(运行阻塞挂起)

目录 前言 1. 进程状态 2. 运行状态 3. 阻塞状态 4. 挂起状态 5. Linux中具体的状态 总结 前言 在Linux操作系统中&#xff0c;进程状态非常重要&#xff0c;它可以帮助我们了解进程在系统中的运行情况&#xff0c;从而更好地管理和优化系统资源&#xff0c;在Linux系统中&am…

3D城市模型可视化:开启智慧都市探索之旅

随着科技的飞速发展&#xff0c;我们对城市的认知已经不再局限于平面的地图和照片。今天&#xff0c;让我们领略一种全新的城市体验——3D城市模型可视化。这项技术将带领我们走进一个立体、生动的城市世界&#xff0c;感受前所未有的智慧都市魅力。 3D城市模型通过先进的计算机…

Harbor高可用(haproxy和keepalived)

Harbor高可用&#xff08;haproxy和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;haproxy和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设…

Java 下载excel文件

一、背景 微信小程序需要导出excel文件&#xff0c;后端技术Java&#xff0c;前端使用uniapp框架&#xff0c;使用excel模板。 二、excel 报表模板 需要补充的内容是以下标记问号的&#xff0c;其中有个表格&#xff0c;内容是动态添加的 三、Java端代码实现 关键步骤&…

SVPWM

SVPWM SVPWMSVPWM原理产品比较特点来源 SVPWM SVPWM的主要思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准&#xff0c;以三相逆变器不同开关模式作适当的切换&#xff0c;从而形成PWM波&#xff0c;以所形成的实际磁链矢量来追踪其准确磁链圆。传统…

如何设置从小程序跳转到其它小程序

​有的商家有多个小程序&#xff0c;希望能够通过一个小程序链接到所有其它小程序&#xff0c;用户可以通过点击跳转链接实现从一个小程序跳转到另一个小程序。要怎么才能实现这样的跳转呢。下面具体介绍。 1. 设置跳转。在小程序管理员后台->分类管理&#xff0c;添加一个…

【开源】JAVA+Vue.js实现天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

C++与 Fluke5500A设备通过GPIB-USB-B通信的经验积累

C与 Fluke5500A设备通过GPIB-USB-B通信的经验积累 以下内容来自&#xff1a;C与 Fluke5500A设备通过GPIB-USB-B通信的经验积累 - JMarcus - 博客园 (cnblogs.com)START 1.需要安装NI-488.2.281&#xff0c;安装好了之后&#xff0c;GPIB-USB-B的驱动就自动安装好了 注意版本…

苍穹外卖Day03——解决总结3中存在的问题

解决Day03中存在的问题 1. ResponseBody 与 RequestBody2. RequestParam 与 PathVariable3. 字段填充技术&#xff08;注解、AOP、反射&#xff09;3.1. AOP3.2. 注解3.3. 反射3.5 字段填充在项目应用 4. 阿里云云存储OOS 1. ResponseBody 与 RequestBody ResponseBody&…

Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP

目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose 3.docker-compose 部署 LNMP 二、问题 1.ntpdate未找到命令 2.timedatectl 如何设置时区与时间同步 3.php网页显示时区不对 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注Lin…