vscode中如何配置c/c++环境
“批判他人总是想的太简单 剖析自己总是想的太困难”
文章目录
- 前言
- 文章有误敬请斧正 不胜感恩!
- 一、准备工作
- 二、安装 VSCode 插件
- 三、配置 VSCode
- 1. 配置编译任务(tasks.json)
- 2. 配置调试器(launch.json)
- 四、运行和调试
- 五、常见问题与解决
- 总结
前言
写在开始:
VS Code 是一款由微软开发的免费代码编辑器,支持多种编程语言,如 Python、JavaScript、C++、Go 等。它拥有丰富的插件市场,可以根据你的需求自由扩展功能,如语法高亮、代码补全、调试工具、Git 集成等,是开发者们的“神器”。
用VScode来写C/C++更加方便一点,不用下那么大的visualstudio.
文章有误敬请斧正 不胜感恩!
以下是本篇文章正文内容,
一、准备工作
-
安装 VSCode
- 前往 VSCode 官网下载最新版本,并根据系统提示完成安装。
-
安装 C++ 编译器
-
Windows:推荐使用 MinGW-w64 作为 C++ 编译器。下载时选择
x86_64版本以支持 64 位开发。- 安装时选择
mingw32-gcc-g++组件。 - 完成安装后,将 MinGW 的 bin 目录(如
C:\mingw-w64\bin)添加到系统的环境变量 PATH 中:- 打开“控制面板” -> “系统和安全” -> “系统”。
- 点击“高级系统设置” -> “环境变量”。
- 找到“系统变量”中的
Path,双击编辑,点击“新建”,然后输入 MinGW 的 bin 路径。
- 安装时选择
-
Linux:打开终端,输入以下命令安装 GCC:
sudo apt-get update sudo apt-get install build-essential -
macOS:在终端中输入以下命令安装 Xcode 命令行工具:
xcode-select --install
-
二、安装 VSCode 插件
-
C/C++ 插件
- 打开 VSCode,点击左侧的扩展图标(或按
Ctrl+Shift+X)。 - 搜索
C/C++,找到由 Microsoft 提供的插件,点击“安装”。

- 打开 VSCode,点击左侧的扩展图标(或按
-
Code Runner 插件(可选)
- 搜索并安装
Code Runner插件。它可以通过右键菜单直接运行代码,是快速测试代码的好帮手。
- 搜索并安装
三、配置 VSCode
VSCode 本身并没有自带的编译功能,所以我们需要设置编译和调试任务。
1. 配置编译任务(tasks.json)
-
创建一个 C++ 文件,例如
main.cpp,写入以下简单代码:#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0; } -
按下
Ctrl+Shift+B,VSCode 会提示设置构建任务,选择Create tasks.json file from template,然后选择Others。 -
编辑生成的
tasks.json,使其看起来如下:{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"],"detail": "Generated task by VS Code"}] } -
关键字段解释:
"command": "g++":使用 g++ 作为编译器。"args":编译参数,-g开启调试信息,${file}表示当前文件,-o用于指定输出文件名。${fileDirname}和${fileBasenameNoExtension}会自动根据当前文件路径和名称生成可执行文件。
2. 配置调试器(launch.json)
-
按下
F5,VSCode 会提示配置调试器,选择C++ (GDB/LLDB)。 -
在生成的
.vscode目录下找到launch.json文件,修改如下:{"version": "0.2.0","configurations": [{"name": "g++ - 生成和调试活动文件","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": true,"MIMode": "gdb","setupCommands": [{"description": "启用 gdb 的漂亮打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "gdb","logging": { "engineLogging": true }}] } -
关键字段解释:
"program":指定运行的可执行文件路径。"miDebuggerPath": "gdb":指定调试器的路径,Windows 用户确保 gdb 已安装。"preLaunchTask": "build":调试前自动执行编译任务。
四、运行和调试
-
编译程序
按Ctrl+Shift+B执行编译,检查终端是否输出“成功生成”的信息。 -
运行程序
在终端直接输入生成的.exe文件名,或通过 Code Runner 插件右键运行。 -
调试程序
按F5启动调试,可以添加断点(在代码行号左侧点击),观察变量值,单步执行。
五、常见问题与解决
-
编译错误:找不到 g++
- 确保 MinGW-w64 的
bin目录已正确添加到环境变量PATH,并重启 VSCode。
- 确保 MinGW-w64 的
-
调试时无法启动 gdb
- 检查
launch.json中miDebuggerPath是否正确,或尝试指定 gdb 的完整路径。
- 检查
-
中文字符显示乱码
- 编译时添加参数
-fexec-charset=GBK可以解决 Windows 下的编码问题。
- 编译时添加参数
总结
以上就是在 VSCode 配置 C/C++ 环境的详细步骤。配置好环境才能顺利运行 C++ 代码,
还能进行debug,跟踪程序执行的每一步。
如果遇到问题,别忘了多看看编译和调试信息,这些是解决big的关键。
祝各位大佬编程愉快!
相关文章:
vscode中如何配置c/c++环境
“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩!一、准备工作二、安装 VSCode 插件三、配置 VSCode1. 配置编译任务(tasks.json)2. 配置调试器(launch.json) 四、运行和调…...
【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢?
【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢? 【梯度消失|梯度爆炸】Vanishing Gradient|Exploding Gradient——为什么我的卷积神经网络会不好呢? 文章目录 【梯度消失|梯度爆炸】Vanishing Gradi…...
MAC 地址简化概念(有线 MAC 地址、无线 MAC 地址、MAC 地址的随机化)
一、MAC 地址 MAC 地址(Media Access Control Address),即媒体访问控制地址,也称为物理地址、硬件地址或链路层地址 MAC 地址有时也被称为物理地址,但这并不意味着 MAC 地址属于网络体系结构中的物理层,它…...
SQL_yog安装和使用演示--mysql三层结构
目录 1.什么是SQL_yog 2.下载安装 3.页面介绍 3.1链接主机 3.2创建数据库 3.3建表操作 3.4向表里面填内容 3.5使用指令查看效果 4.连接mysql的指令 4.1前提条件 4.2链接指令 编辑 4.3创建时的说明 4.4查看是不是连接成功 5.mysql的三层结构 1.什么是SQL_yog 我…...
蓝桥杯-STM32G431RBT6(解决LCD与LED引脚冲突的问题)
一、LCD与LED为什么会引脚冲突 LCD与LED引脚共用。 网上文章是在LCD_WriteRAM、LCD_WriteRAM_Prepare、LCD_WriteReg中添加,但问题并没有解决。 二、使用步骤 在如下函数中加入uint16_t tempGPIOC->ODR; GPIOC->ODRtemp; LCD_Init(); void LCD_C…...
ESP-01S,ESP8266设置客户端透传模式
ESP-01S,ESP8266设置透传(透明传输)模式 例子 ATCWMODE_DEF1 //station模式 ATRST //重启 ATCWLAP //查看周围热点 ATCWJAP_DEF"ssid","password" //连接热点 ATCIFSR //查看ip ATCIPSTA_DEF"192.168.82.66","192.168.6.1&…...
NFT Insider #147:Sandbox 人物化身九月奖励上线;Catizen 付费用户突破百万
市场数据 加密艺术及收藏品新闻 Doodles 动画特别剧《Dullsville and The Doodleverse》在多伦多国际电影节首映 Doodles 最近在多伦多国际电影节(TIFF)首映了其动画特别剧《Dullsville and The Doodleverse》,这是该品牌的一个重要里程碑。…...
103.WEB渗透测试-信息收集-FOFA语法(3)
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:102.WEB渗透测试-信息收集-FOFA语法(2) FOFA使用实例 组件框架 …...
SpringDataJPA基础增删改查
添加:save(对象) 删除:delete(主键或者带有主键的对象) 修改:save(对象) 对象中没有id,执行添加操作 对象中有id id不存在:执行添加 id存在: 其余数据…...
好代码网同款wordpress主题,完全开源无加密可二开
这个其实就是好代码网站的早期整站打包代码,当时售价198的,现在里面的部分数据已经过期了,只能展示效果,没法下载。所以就只当做主题分享给大家使用。 资源下载类网站目前还是红利期,搞个特价主机和域名,再…...
如何在@GenericGenerator中显式指定schema
现在的情况是,在MySQL中有db1和db2两个数据库。项目使用Hibernate,可同时访问db1和db2,默认数据库为db1。表table2在db2中。且table2的主键名为ids,是自增长字段(Auto Increment)。 table2和ids的定义为&a…...
感知器神经网络
1、原理 感知器是一种前馈人工神经网络,是人工神经网络中的一种典型结构。感知器具有分层结构,信息从输入层进入网络,逐层向前传递至输出层。根据感知器神经元变换函数、隐层数以及权值调整规则的不同,可以形成具有各种功能特点的…...
【C++】——继承详解
目录 1、继承的概念与意义 2、继承的使用 2.1继承的定义及语法 2.2基类与派生类间的转换 2.3继承中的作用域 2.4派生类的默认成员函数 <1>构造函数 <2>拷贝构造函数 <3>赋值重载函数 <4析构函数 <5>总结 3、继承与友元 4、继承与静态变…...
RocketMQ 消费方式
在消息传递系统中,“推(Push)”和“拉(Pull)”是两种不同的消息消费方式,RocketMQ 也支持这两种模式。下面是对这两种模式的详细解释: 1. 推模式(Push Model) 模式简介…...
初始爬虫7
针对数据提取的项目实战: 补充初始爬虫6的一个知识点: etree.tostring能够自动补全html缺失的标签,显示原始的HTML结构 # -*- coding: utf-8 -*- from lxml import etreetext <div> <ul> <li class"item-1">…...
深入理解Appium定位策略与元素交互
深入理解Appium定位策略与元素交互 在移动应用测试领域,Appium作为一款流行的跨平台自动化测试工具,其强大而灵活的元素定位能力对于构建稳定、高效的测试脚本至关重要。本文将深入探讨Appium支持的各种定位方法,并分享如何通过高级技巧和最…...
java基础面试题总结
java基础面试题总结 目录 前言 1. JVM vs JDK vs JRE的了解 2. 谈谈你对编程、编译、运行的理解 3. 什么是字节码?采用字节码的好处是什么? 5. java中的注解有几种,分别是什么? 6. 字符型常量和字符串常量 7.标识符和关键字的认识 8. 泛型ÿ…...
Typescript 的类型断言
类型断言(Type Assertion)是 TypeScript 中的一种机制,允许开发者手动指定某个值的类型,而不是让 TypeScript 自动推断类型。类型断言通常用于在编译时告诉 TypeScript 编译器某个值的具体类型,以便在后续代码中进行类…...
【设计模式】单例模式详解及应用实例
单例模式(Singleton Pattern)是一种创建型设计模式,保证一个类在整个程序的生命周期中只有一个实例,并提供一个全局访问点。单例模式广泛用于需要全局唯一实例的场景,比如数据库连接池、日志对象、线程池等。 单例模式…...
学习图解算法 使用C语言
图解算法 使用C语言 也就是通过C语言实现各种算法 链接:百度云盘 提取码:1001...
Movie_Recommend系统架构解析:从数据采集到推荐展示
Movie_Recommend系统架构解析:从数据采集到推荐展示 【免费下载链接】Movie_Recommend 基于Spark的电影推荐系统,包含爬虫项目、web网站、后台管理系统以及spark推荐系统 项目地址: https://gitcode.com/gh_mirrors/mo/Movie_Recommend Movie_Rec…...
OpenSpeedy游戏变速工具实战指南:打破帧率限制的完整攻略
OpenSpeedy游戏变速工具实战指南:打破帧率限制的完整攻略 【免费下载链接】OpenSpeedy 🎮 An open-source game speed modifier. 项目地址: https://gitcode.com/gh_mirrors/op/OpenSpeedy OpenSpeedy是一款开源免费的游戏变速工具,能…...
技术债务管理:如何与产品经理就“还债”达成共识?
在追求快速迭代和功能交付的软件开发浪潮中,技术债务如同潜伏在系统深处的“慢性病”,悄然累积,最终可能引发系统脆弱、交付迟滞、团队士气低落等一系列并发症。对于软件测试从业者而言,技术债务带来的影响尤为直接:测…...
免费开源甘特图工具GanttProject:从任务混乱到清晰可视化的完整解决方案
免费开源甘特图工具GanttProject:从任务混乱到清晰可视化的完整解决方案 【免费下载链接】ganttproject Official GanttProject repository 项目地址: https://gitcode.com/gh_mirrors/ga/ganttproject 还在为项目管理中的任务混乱、进度模糊而烦恼吗&#x…...
新手入门:在快马平台生成代码,理解智能应用控制警告的模拟实现
今天想和大家分享一个特别适合编程新手的小项目——通过HTML和JavaScript模拟"智能应用控制"的安全警告弹窗。这个练习不仅能帮助我们理解现代操作系统中的安全机制,还能学到实用的前端开发技巧。 项目背景理解 智能应用控制是现代操作系统的一项重要安全…...
Z-Image-Turbo镜像实战教程:开箱即用,9步生成高清图片
Z-Image-Turbo镜像实战教程:开箱即用,9步生成高清图片 1. 为什么选择Z-Image-Turbo镜像 如果你正在寻找一个能快速生成高质量图片的AI工具,Z-Image-Turbo镜像可能是目前最省心的选择。这个镜像最大的优势在于它已经预置了完整的32GB模型权重…...
Streamlit+像素风=高效零售AI?Ostrakon-VL部署完整指南
Streamlit像素风高效零售AI?Ostrakon-VL部署完整指南 1. 项目概览:当零售AI遇上像素艺术 想象一下,你正在玩一款90年代的复古游戏,但这次你不是在打怪升级,而是在用AI分析零售店铺的货架陈列。这就是Ostrakon-VL扫描…...
Graphormer一键部署与运维监控实战
Graphormer一键部署与运维监控实战 1. 企业级AI模型运维挑战 在AI技术快速落地的今天,Graphormer作为图神经网络领域的先进模型,已经在推荐系统、分子属性预测等场景展现出强大能力。但很多企业在实际部署后常常面临运维难题:服务突然崩溃找…...
MySQL高频面试题(2026最新版):覆盖90%考点,小白也能直接背
很多开发者备考时,要么盲目刷题、记不住重点,要么只背答案、不懂原理,面试时被面试官追问一句就卡壳。其实MySQL面试没有那么复杂,核心考点就那么多,只要吃透高频题、理解底层逻辑,就能从容应对。本文整理了…...
缺失值处理太慢?重复检测卡顿?Polars 2.0清洗提速秘技,一文掌握5大核心模式
第一章:Polars 2.0数据清洗性能瓶颈的本质剖析Polars 2.0 在引入 LazyFrame 默认执行模型与物理计划优化器后,显著提升了复杂 ETL 流水线的吞吐能力,但实际数据清洗场景中仍频繁出现 CPU 利用率不均、内存驻留时间过长及 UDF 执行退化等现象。…...
