3、windows环境下vscode开发c/c++环境配置(二)

前言:上一篇文章写了windows环境下,配置vscode的c/c++开发环境,这一篇讲vscode开发c/c++的配置文件,包括c_cpp_propertues.json,task.json及launch.json。

一、总体流程

通过c/c++插件我们就可以来编写c/c++程序了,但是这仅仅是可以编辑c/c++程序,将c/c++程序编译成机器可以识别的语言还需要配合mingw或者其他编译器来执行,mingw编译器配置可以参考笔者上一篇文章。同时我们还想在编辑c/c++程序的时候能有智能提示,比如一些关键字不用写出全名就可以提示进行选择,这里就需要通过一些配置文件告诉本机系统,这个配置文件就是c_cpp_propertues.json。

配置好c_cpp_propertues.json文件后,我们就可以开心的编写我们的c/c++程序里,而且会有一些智能提示,包括一些引用的头文件也不会无故报错标红了。编写好的程序需要被编译才可以运行在机器上面,这里就需要第二个配置文件task.json。task.json功能是用来builde(构建或编译)编写好的程序的。

其实前两步就可以让程序跑起来了,但是我们开发中少不了要调试程序,那就需要第三个配置文件了--launch.json。

官网对这三个文件的定位如下。

二、c_cpp_propertues.json

第一次编辑好程序后保存一般头文件下面会有红色波浪线,这就是vscode编辑器不知道这个东西是什么,所以我们就需要将这个东西所在的位置告诉vscode,复制这个告知工作的就是c_cpp_propertues.json配置文件,他的主要功能就是告诉编辑器头文件路径及一些关键字的智能提示等。

回到 Untitled-1.c 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 C/C++,选择编辑配置(UI),如下图示。注意,编辑器会提示先选择一个文件夹,方便后面编写的程序都可以使用配置文件。

此时,vscode 界面左上角的 SHENZHEN 文件夹下会出现一个 .vscode 文件夹,如下图示。

在 C/C++ 配置界面下的编译器路径,选择适合自己的,如果是 C 语言,则选择 gccC++ 则选择 g++,编译器路径是之前存放 mingw 的路径,如果当前显示的不是,则需要修改成之前存放 mingw 的路径,如下图示。

在当前界面下,将 IntelliSense 模式,设置成 windows-gcc-x64,将 C 标准设置为 c11C++ 标准设置为 c++17,如下图示。(这里设置可以根据自己实际情况)

此时,c_cpp_properties.json 文件内容如下:

三、task.json

程序写好后就需要编译了,tasks.json文件来告诉VS Code如何构建(编译)程序,可以代你执行类似于在命令行输入 gcc hello.c -o hello” 命令的操作,你只要在图形界面下操作即可生成可执行文件。

回到 Untitled-1.cpp 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 tasks,选择任务:配置默认生成任务,然后选择 C/C++:g++.exe 生成活动文件,如下图示。

此时 .vscode 文件夹中多出一个 tasks.json 文件,如下图示。

tasks.json 文件内容如上。

四、launch.json

配置好编译(构建)文件后,就可以调试运行了。launch.json 是用于运行 ( run ) 和调试 ( debug ) 的配置文件,可以指定语言环境,指定调试类型等等内容。

回到 Untitled-1.cpp 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 debug,选择调试:开始调试,然后再选择 C++ (GDB/LLDB),如下图示

点击 vscode 左上角运行下的创建 launch.json 文件,然后再选择 C++ (GDB/LLDB ) ,如下图示。 

 此时,生成了一个 launch.json 文件,如下图示。

五、补充

 c_cpp_properties.json、tasks.json、launch.json三个文件一经配置,可以在多个项目中都是用,直接复制他们所在的.vscode文件夹就可以。这里笔者将常用的三个文件的配置信息贴出,大家可以根据自己情况修改配置内容。

c_cpp_properties.json

{"configurations": [{"name": "Linux",        //配置名称,默认为系统名,可以自行更改"includePath": [        //(常用)运行项目包含.h头文件的目录,"${workspaceFolder}/**"//此处会匹配工作文件下的所有文件],                      //添加"compilerPath"后,系统include路径可不写明"defines": [],        //(常用)定义一些需要的变量,等价于在编译时写"-D变量" "compilerPath": "/usr/bin/gcc",     //编译器的路径"cStandard": "gnu17",               //C标准的版本"cppStandard": "gnu++14",           //C++标准的版本"intelliSenseMode": "gcc-x64"       //IntelliSense的一些配置,默认即可}],"version": 4
}

tasks.json

{"version": "2.0.0","tasks": [{"type": "cppbuild",        //任务类型(如果是shell,下面的command就相当于执行shell命令)"label": "环境配置测试",     //任务的名称,可以修改,但一定要和launch中的"preLaunchTask"项保持一致"command": "/usr/bin/gcc", //编译器(可执行文件)的路径"args": [                  //(常用)编译时使用的参数,和命令行下相同"-g","${fileDirname}/hello.c","-o","${fileDirname}/hello"],//上述内容相当于在命令行下输入了: gcc hello.c -o hello"options": {"cwd": "/usr/bin"     //编译器的目录},"problemMatcher": ["$gcc"                //使用gcc捕捉错误],"group": "build","detail": "compiler: /usr/bin/gcc"      //一些描述性信息}]
}

launch.json 

{"version": "0.2.0","configurations": [{"name": "运行和调试",         //运行和调试任务的名称,可自定义"type": "cppdbg",            //配置类型,默认即可"request": "launch",         //launch模式允许我们打断点进行调试,默认即可"program": "${fileDirname}/hello", //(常用)程序目录,这里相当于在命令行执行"hello""args": [],                  //(常用)程序(main函数)的入口参数"stopAtEntry": false,       //在入口处暂停,选true相当于在入口处增加断点"cwd": "${workspaceFolder}",//当前的文件目录"environment": [],          //添加到程序的环境变量"externalConsole": false,   //外部控制台,true在调试时会开启系统控制台窗口,false会使用vscode自带的调试控制台"MIMode": "gdb",            //使用gdb进行调试"setupCommands": [           //用来设置gdb的参数,默认即可{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "环境配置测试",    //(常用)运行和调试前要执行的task(编译)任务,任务名要和task.json里的"label"对应"miDebuggerPath": "/usr/bin/gdb"  //debug调试工具的路径,这里使用gdb所在的路径}]
}

六、参考文献

从零开始的vscode安装及环境配置教程(C/C++)(Windows系统)_vscode搭建编译器环境-CSDN博客

launch.json / tasks.json / c_cpp_properties.json 解析 配置文件 C++ VSCode - HarryPotterIsDead! - 博客园 (cnblogs.com)

一键搞定 VSCode 下的 C/C++基本开发环境配置 - 知乎 (zhihu.com)

VS Code上C++的环境配置&tasks.json和launch.json解析 - 知乎 (zhihu.com)​

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

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

相关文章

【ArcGIS微课1000例】0104:二位面状数据转三维多面体(建筑物按高度拉伸)

文章目录 一、加载数据二、添加高度字段三、三维拉伸显示四、生成三维体数据五、注意事项一、加载数据 打开ArcScene,加载配套实验数据(0104.rar中的二维建筑物矢量数据,订阅专栏,获取专栏所有文章阅读权限及配套数据),如下图所示: 二、添加高度字段 本实验将二维数据…

3、电源管理入门之CPU热插拔详解

目录 简介 1. 省电技术概览 (1)、cpu hotplug和idle的区别? 2. 热插拔代码介绍 (1)、为什么以cpu1为例? 3. ATF中处理 简介 之前介绍了电源的开机和关机重启,本小节开始介绍省电的技术,其中最暴力的省电方法就是直接拔核hotplug处理,就像需要…

什么是 Wake-on-LAN?如何使用 Splashtop 远程喊醒电脑

在当今数字互联的世界里,远程访问电脑已不仅仅是一种便利,而是许多人的需要。无论是远程工作、IT 支持,还是管理整个网络中的计算机群,我们都必须掌握正确的工具和技术。 其中一项在远程访问中发挥关键作用的技术是 Wake-on-LAN …

挑战杯 基于LSTM的天气预测 - 时间序列预测

0 前言 🔥 优质竞赛项目系列,今天要分享的是 机器学习大数据分析项目 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/po…

Stable Diffusion——基础模型、VAE、LORA、Embedding各个模型的介绍与使用方法

前言 Stable Diffusion(稳定扩散)是一种生成模型,基于扩散过程来生成高质量的图像。它通过一个渐进过程,从一个简单的噪声开始,逐步转变成目标图像,生成高保真度的图像。这个模型的基础版本是基于扩散过程…

论文精读--word2vec

word2vec从大量文本语料中以无监督方式学习语义知识,是用来生成词向量的工具 把文本分散嵌入到另一个离散空间,称作分布式表示,又称为词嵌入(word embedding)或词向量 Abstract We propose two novel model architec…

白银交易新手指南:怎样选择可靠的现货交易平台?

在投资市场上,白银作为一种贵金属,具有较高的投资价值和风险防范功能。对于白银交易新手来说,选择一个可靠的现货交易平台是至关重要的。那么,如何挑选一个适合自己的现货交易平台呢? 1. 平台资质 一个正规的现货交易…

Spring最新核心高频面试题(持续更新)

1 什么是Spring框架 Spring框架是一个开源的Java应用程序开发框架,它提供了很多工具和功能,可以帮助开发者更快地构建企业级应用程序。通过使用Spring框架,开发者可以更加轻松地开发Java应用程序,并且可以更加灵活地组织和管理应…

【Azure 架构师学习笔记】- Azure Databricks (8) --UC架构简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (7) --Unity Catalog(UC) 基本概念和组件 前言 UC 简单来说,就是管理两样东西:用户和元存储。 用户管理 所有Databri…

C#,笛卡尔树(Cartesian Tree)的构造、遍历算法与源代码

Ren Descartes 一、笛卡尔(Ren Descartes) 勒内笛卡尔(Ren Descartes,1596年3月31日-1650年2月11日),1596年3月31日生于法国安德尔-卢瓦尔省的图赖讷(现笛卡尔,因笛卡尔得名&#…

Day 30 标准IO

文章目录 1.什么是标准IO1.1 概念1.2 特点1.3 操作 2.缓存区3.函数接口3.1 打开文件fopen3.2 关闭文件 fclose3.3 读写文件操作3.3.1 每次读写一个字符:fgetc()、fputc()每次读一个字符fgetc()每次写一个字符fputc()(1)针对文件(2)针对终端feof和ferror 3.3.2 每次一…

击败.helper勒索病毒:恢复被加密的数据文件的方法

导言: 近年来,勒索病毒成为网络安全领域的一大威胁,其中.helper勒索病毒更是备受关注。该类型的勒索软件以其高效的加密算法,能够将用户的文件加密,迫使用户支付赎金才能解密数据。本文将介绍.helper勒索病毒的特点、恢复被加密数…

集成使用 GitHub Copilot 提升 IDEA 开发效率

集成使用 GitHub Copilot 提升 IDEA 开发效率 在现代软件开发中,集成开发环境(IDE)如IntelliJ IDEA已经成为开发人员不可或缺的工具。它们提供了代码编辑、调试、版本控制等一系列功能,极大地提高了开发效率。而GitHub Copilot作…

【Docker】Linux主机部署Docker

Docker部署 1.二进制文件部署 到如下地址,下载二进制包。 Docker官网:https://docs.docker.com/engine/install/binaries/ 网易镜像源:https://mirrors.163.com/docker-ce/linux/static/stable/x86_64/ 下载好的二进制包上传到主机&#xf…

Java之获取Nginx代理之后的客户端IP

Java之获取Nginx代理之后的客户端IP Nginx代理接口之后,后台获取的IP地址都是127.0.0.1,解决办法是需要配置Nginx搭配后台获取的方法,获得设备的真实地址。我们想要获取的就是nginx代理日志中的这个IP nginx配置 首先在nginx代理的对应lo…

【笔记】APN 配置参数 bitmask 数据转换(Android KaiOS)

一、参数说明 &#xff08;一&#xff09;APN配置结构对比 平台AndroidKaiOS文件类型xmljson结构每个<apn>标签是一条APN&#xff0c;包含完成的信息层级数组结构&#xff0c;使用JSON格式的数据。最外层是mcc&#xff0c;其次mnc&#xff0c;最后APN用数组形式配置&am…

【漏洞复现-通达OA】通达OA video_file.php 任意文件下载漏洞

一、漏洞简介 通达OA video_file.php文件存在任意文件下载漏洞&#xff0c;攻击者通过漏洞可以读取服务器敏感文件。 二、影响版本 ● 通达OA2011 三、资产测绘 ● hunterapp.name"通达 OA" ● 特征 四、漏洞复现 GET /general/mytable/intel_view/video_file.…

Javaweb之SpringBootWeb案例之切入点表达式的详细解析

3.3 切入点表达式 从AOP的入门程序到现在&#xff0c;我们一直都在使用切入点表达式来描述切入点。下面我们就来详细的介绍一下切入点表达式的具体写法。 切入点表达式&#xff1a; 描述切入点方法的一种表达式 作用&#xff1a;主要用来决定项目中的哪些方法需要加入通知 …

带Alpha通道的TIFF文件在GeoServer发布PNG瓦片失败的问题

我在使用GeoServer发布Tiff切PNG瓦片切不了&#xff0c;但是JPG可以&#xff0c;用QGIS转坐标系之后可以&#xff0c;但是用ArcGIS转坐标系之后不可以&#xff0c;看GeoServer日志发现报错如下&#xff1a; org.geowebcache.GeoWebCacheException: Problem communicating with…

浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用

摘要&#xff1a;本文分析了木材加工企业的特点、现状及常见电气火灾隐患&#xff0c;提出了消灭电气火灾隐患的措施。结尾介绍了木材加工企业常用电气设备的选用及电气火灾监控系统在其低压配电系统的应用方案及产品选型。 关键词&#xff1a;木材加工企业&#xff1b;电气火…