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

VSCode本地C/C++环境配置

 基本环境下载

1.我的系统是windows,自己先下载安装VSCode,网上视频实在太多,我建议跟着B站视频操作。

2.下载安装好后你需要明白:VSCode只是一个编辑工具,我们要写C/C++代码得编译运行,所以我们要配置它在windows下的开发环境,我们使用的是MINGW,它可以让我们在windows下使用gcc g++编译运行C/C++代码,知道这些就够了。

3.你可以在该路径下载版本为8.1.0版本的MINGW,放在某个文件夹,比如我放在E:\software\forVSCode

或者你也可以直接去官网下载,

同样放在E:\software\forVSCode,这个是11.1.0的版本,注意不要下载最新的,因为我遇到版本问题带来的segmentation fault 错误且不容易发现。

如果你不想下载11.1.0或者你对于不同版本名称有所困惑,请你查看链接。

4.然后解压,然后复制它的 bin目录到系统环境变量中去;比如复制E:\software\forVSCode\mingw64\bin到环境变量中。

5.我们在在cmd中使用gcc --version 或者使用 where gcc 命令验证是否添加成功。

6.然后在本地创建一个文件夹并用vscode打开,我们打算把代码放在这个文件夹下,把他作为我们的工作区。

7.下载C/C++扩展。

单个.c文件怎么编译运行 

8.此时你可以写代码了,如果在#include头文件的时候发现出现红色波浪线,请你检查下述图片中的includePath:
如果为空或者不是你刚下载的路径请你复制你的mingw的include目录并添加进去。

9.下面应该配置tasks.json了,点击下图中的配置任务,:

 在弹出的界面中,选择C/C++:gcc.exe生成活动文件,此时你的工作区下生成了tasks.json文件。大概长下面这样,注意:如果这一步骤遇到了麻烦,请查看下图:

依照它的步骤执行即可,或者干脆直接新建一个tasks.json然后拷贝下图进去直接修改。 

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "E:/software/forVSCode/mingw64/bin/gcc.exe", //编译器路径"args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe" //生成可执行文件路径及名称,即:就在这个文件所在路径下生成一个去掉源文件扩展名后加上.exe的一个文件。],"options": {"cwd": "E:/software/forVSCode/mingw64/bin"},"problemMatcher": ["$gcc"],"group": "build","detail": "编译器:E:/software/forVSCode/mingw64/bin/gcc.exe"}]
}

10.鼠标点击源文件,然后点击下图:

 ·如果出现“终端进程启动失败(退出代码: -1)。 * 终端将被任务重用,按任意键关闭。”的错误。

请检查tasks.json中的:

      "options": {
        "cwd": "E:/software/forVSCode/mingw64/bin"
      },

是否写对。


此外,你使用这种方法编译文件时要记得鼠标点击你要编译的源文件,而不是点击其他文件,否则你将得到这个错误:

总之,你要记着:此时我们编译代码的操作就是终端-运行生成任务的方式,只要.vscode下的配置文件tasks.json(编译依赖这个文件)正确即可,我们在创建新的工程的时候也可以直接把.vscode文件夹拷贝过去,根据自己需要决定是否修改或者不修改,实现复用。

11.如果一切顺利的话,你将得到一个exe文件,键盘同时按下Ctrl+`打开终端:

hello被打印出来。

多个.c文件怎么编译运行

12.此外值得注意的是:上述方法针对的是单文件,下面我们讲解多个C/C++文件。

我们继续创建一个新的文件夹,并用vscode打开。并把之前的.vscode复制过来,略微改造:

我的修改结果:

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "E:/software/forVSCode/mingw64/bin/gcc.exe", //编译器路径"args": ["-fdiagnostics-color=always","-g","${workspaceFolder}/*.c","-o","${workspaceFolder}/${workspaceRootFolderName}.exe" //生成可执行文件路径],"options": {"cwd": "E:/software/forVSCode/mingw64/bin"},"problemMatcher": ["$gcc"],"group": "build","detail": "编译器:E:/software/forVSCode/mingw64/bin/gcc.exe"}]
}

 然后写好两个.c源文件,用于测试验证。

此时继续点击-终端-运行生成任务。

然后Ctrl+`打开终端,运行可执行文件。

C++文件编译运行 

13.此时我们已经学会了在vscode下编译单个C文件和多个C文件,那么C++呢?
我们回到最开始编译单文件的工作区,Ctrl+shift+P,点击C/C++编辑配置,我们来到这里:

 

修改后,我们可以看到c_cpp_properties.json多了一个C++的配置:

此时,我们还缺少对于tasks.json的配置:
鼠标点击我们写好的hello.cpp,然后点击:

此时tasks.json增加了相关配置:

此时,点击-终端-运行生成任务,选择g++.exe,然后Ctrl+`打开终端,然后运行即可:

 

同样的,要编译多个C++文件,我们只需要修改tasks.json即可。

14.下面我们创建launch.json文件,为我们调试文件做准备。

 弹出后,选择C++(GDB)。

点击“添加配置”:

然后选择“C/C++ (GDB启动)。

生成默认配置是不能用的,我们必须做出相关修改:
 

{"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe", //调试谁?当然是tasks.json生成的可执行文件"args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "E:\\software\\forVSCode\\mingw64\\bin\\gdb.exe", //用谁调试,我们使用mingw下的gdb.exe"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

 如上是我的修改后的文件,你需要修改两行:program,miDebuggerPath,分别是你要调试谁?用什么工具调试?

下面开始调试:

在3 4行打好断点,然后按F5开始调试。具体命令如下: 

 你也可以使用图形窗口来调试:

 到此,我们就讲解完了Windows下vscode的配置调试。

vscode是一个强大的工具,不止C/C++.........任重而道远。

其他

vscode调试依赖launch.json,编译依赖tasks.json。

 

vscode中要分清设置中的‘工作区’ 和‘ 用户 ’  ,这两个概念。前者指的是你打开的某个文件夹,他可以和你用户有不一样的配置。

相关文章:

VSCode本地C/C++环境配置

基本环境下载 1.我的系统是windows,自己先下载安装VSCode,网上视频实在太多,我建议跟着B站视频操作。 2.下载安装好后你需要明白:VSCode只是一个编辑工具,我们要写C/C代码得编译运行,所以我们要配置它在w…...

【智能算法应用】淘金优化算法求解二维路径规划问题

摘要 本文基于智能算法的淘金优化算法(Gold Panning Optimization, GPO)求解二维路径规划问题。该算法模拟淘金过程中个体寻找最优金矿路径的行为,利用适应度函数优化路径规划,能够在复杂环境下实现从起点到目标点的最优路径搜索…...

Linux挖矿病毒(kswapd0进程使cpu爆满)

一、摘要 事情起因:有台测试服务器很久没用了,突然监控到CPU飙到了95以上,并且阿里云服务器厂商还发送了通知消息,【阿里云】尊敬的xxh: 经检测您的阿里云服务(ECS实例)i-xxx存在挖矿活动。因此很明确服务器中挖矿病毒…...

【java】ArrayList与LinkedList的区别

目录 1. 说明2. 内部实现2.1 ArrayList2.2 LinkedList 3. 性能特点3.1 插入和删除操作3.2 访问操作3.1 遍历操作 4. 使用场景5. 扩容机制6. 空间开销 1. 说明 1.Java中的ArrayList和LinkedList是两种常用的集合实现类,都属于Java集合框架的一部分,但它们…...

【LangChain系列6】【Agent模块详解】

目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Agent模块详解2-0、Agent核心思想——React介绍2-0-1、React的介绍以及由来2-0-2、伪代码介绍React的执行顺序 2-1、Agent介绍2-1、Self ask with se…...

JavaScript Cookie 与 服务器生成的 Cookie 的区别与应用

JavaScript Cookie 与 服务器生成的 Cookie 的区别与应用 Cookie是一种甜点,同时也是web前端开发中一种非常常见且重要的技术,它用于在客户端和服务器之间存储和传递信息。用户身份验证、会话管理,还是用户个性化设置,都离不开Coo…...

深入了解Git、GitHub、GitLab及其应用技巧

在现代软件开发中,掌握版本控制系统(VCS)是至关重要的,其中Git是最流行的分布式版本控制工具之一。本文将详细介绍Git的用途及其基本操作,并深入探讨GitLab、GitHub、和Git Desktop的使用方法,同时总结Git的…...

ctfshow(316,317,318)--XSS漏洞--反射性XSS

反射型XSS相关知识 Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,…...

Visual Studio2022版本的下载与安装

1-首先打开微软的官网,下面就是链接 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux免费下载 Visual Studio IDE 或 VS Code。 在 Windows、Mac 上试用 Visual Studio Professional 或企业版。https://visualstudio.microsoft.com/zh-hans/downloads/?…...

nodeJS程序如何引入依赖包

在 Node.js 运行时中引入依赖包通常通过以下步骤完成: 初始化项目: 首先,你需要初始化一个 Node.js 项目。如果你还没有 package.json 文件,可以使用 npm init 命令来创建它。运行以下命令并按提示输入相关信息: npm i…...

建网站怎么建?只需几个步骤

在这个网络飞速发展的时代,越来越多的人都渴望拥有自己的网站。然而,对于大多数新手来说,如何建立自己的网站可能充满了挑战。本文将为您详细介绍建网站的关键步骤,让您能够轻松搭建自己的网站。 选择适合的建站工具 虽然市面上有…...

机器学习课程总结(个人向)

前言 通过看课件PPT整理的笔记,没有截图 由于大部分内容已经耳熟能详了,故记录比较简略,只记录了一些概念和需要记忆的地方。 里面有较多的个人观点,未必正确。如有错误,还请各位大佬指正 正文 绪论 机器学习的定…...

数据分析-43-时间序列预测之深度学习方法GRU

文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 GRU2.1 模拟数据2.2 数据归一化2.3 生成滞后特征2.4 切分训练集和测试集2.5 模型训练2.6 模型预测3 参…...

Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法

类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数:返回值:示例代码: isnull不会检查空字符串 数据准备 有一组数据信息如下,其中主要将TotalCharges、MonthlyC…...

Elasticsearch的自定义查询方法到底是啥?

Elasticsearch主要的目的就是查询,默认提供的查询方法是查询全部,不满足我们的需求,可以定义查询方法 自定义查询方法 单条件查询 我们查询的需求:从title中查询所有包含"鼠标"这个分词的商品数据 SELECT * FROM it…...

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法:需要安装Maven项目插件 输入​Maven Integration plugin​...

怎么更换IP地址 改变IP归属地的三种方法

要更换自己的IP地址,您可以按照以下步骤进行操作: 1. 了解IP地址类型:首先,您需要了解您当前使用的IP地址类型。IP地址分为静态IP和动态IP两种。静态IP地址是固定的,使用第三方软件比如S深度IP转换器;而使用…...

C#-异步查询示例

文章速览 CancellationTokenSource 概述代码示例 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ CancellationTokenSource 概述 使用System.Threading下的CancellationTokenSource类,进…...

设计模式之适配器模式(从多个MQ消息体中,抽取指定字段值场景)

前言 工作到3年左右很大一部分程序员都想提升自己的技术栈,开始尝试去阅读一些源码,例如Spring、Mybaits、Dubbo等,但读着读着发现越来越难懂,一会从这过来一会跑到那去。甚至怀疑自己技术太差,慢慢也就不愿意再触碰这…...

vue+exceljs前端下载、导出xlsx文件

首先安装插件 npm install exceljs file-saver第一种 简单导出 //页面引入 import ExcelJS from exceljs; import {saveAs} from file-saver; export default {methods: { /** 导出操作 */async handleExportFun() {let that this// 获取当前年月日 用户下载xlsx的文件名称设…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...