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

Vscode搭建C语言多文件开发环境

一、文章内容简介

        本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件,以及vscode必备插件,最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多,建议大家在阅读时使用电脑阅读,按照目录来看。

二、前提需要安装软件

①vscode,安装简单,百度一下

②Mingw64,这是windows下的gcc编译和调试工具,免安装,下载解压即可。资源如下博主有:

MinGW-w64 10.0.0 + GCC 12百度云盘下载_mingw-w64 gcc百度云盘-CSDN博客

三、vscode插件配置

安装好vscode之后,必须安装C/C++插件,才能识别.c文件,安装Chinese (Simplified)汉化。

四、tasks.json文件和launch.json文件配置        

        这两个文件的作用,在此处提前介绍,在五、举例测试中会用到,在此处看明白了文件作用,便于在五中用到时,直接使用。

1.tasks.json文件配置

tasks.json是指定编译器gcc路径,需要编译的.c文件,以及编译后生成的可执行exe文件

Vscode默认配置如下:编译一个.c文件时,不需要修改,如果需要编译多个文件,就需要修改。

单一文件编译,即vscode默认,配置如下:

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "C:\\mingw64\\bin\\gcc.exe",//gcc编译器路径"args": ["-fdiagnostics-color=always","-g","${file}",//需要编译的文件,${file}指当前.c文件,多文件时此处需要修改"-o","${fileDirname}\\${fileBasenameNoExtension}.exe",//编译后生成的可执行文件,此处是和当前.c文件同名的.exe文件。""],"options": {"cwd": "C://mingw64//bin/"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

多文件编译,修改后配置如下: 配置成编译当前文件夹下所有.c文件,并生成a.exe可执行文件。

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "C:\\mingw64\\bin\\gcc.exe",//安装的gcc路径,我的解压后是放在c盘根目录下"args": ["-fdiagnostics-color=always","-g",// "${file}","${fileDirname}\\*.c",//编译当前目录下,所有的.c文件// "${fileDirname}\\test.c",//编译当前目录下test.c文件,这种是指定编译哪一个,为了方便,直接编译所有,选上面一种"-o",// "${fileDirname}\\${fileBasenameNoExtension}.exe","${fileDirname}\\a.exe",//由于是多文件,编译后生成的可执行文件名为a.exe,这个名字再launch.json中要用""],"options": {"cwd": "C://mingw64//bin/"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

2.launch.json文件配置

launch.json是调试配置文件,需要指定要调试的exe文件,指定调试器gdb的路径。

单一文件 ,vscode默认配置如下:

{"version": "0.2.0","configurations": [{"name": "C/C++ Runner: Debug Session","type": "cppdbg","request": "launch","args": [],"stopAtEntry": false,"externalConsole": false,"cwd": "c:/Users/Xiasir/Desktop/error","program": "${fileDirname}\\${fileBasenameNoExtension}.exe",//tasks.json生成的单一文件的可执行文件"MIMode": "gdb","miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//gdb执行路径"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

多文件调试,配置如下:

{"version": "0.2.0","configurations": [{"name": "C/C++ Runner: Debug Session","type": "cppdbg","request": "launch","args": [],"stopAtEntry": false,"externalConsole": true,//使用内部控制台"cwd": "c:/Users/Xiasir/Desktop/error",// "program": "${fileDirname}\\${fileBasenameNoExtension}.exe","program": "${fileDirname}\\a.exe",//在tasks.json中生成的可执行文件a.exe,a是可执行文件名,由我们自己定义"MIMode": "gdb","miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//调试器gdb的执行路径,我的mingw64安装在C盘,根据你自己的确定"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

五、举例测试

1.建立文件夹 和 多个.c文件

在桌面新建文件夹,命名为test_vscode,并建立main.c和test.c和test.h两个文件。如下图所示:

2.使用vscode打开文件夹

点击test_vscode文件夹,右键,使用vscode打开

3.编辑代码

①main.c代码如下:

#include <stdio.h>
#include "test1.h"int main(void)
{printf("hello world\r\n");test();//此函数在test1.c中实现,在test1.h中声明return 0;
}

②test1.c代码如下:

#include "test1.h"
#include <stdio.h>void test(void)
{printf("this is test\r\n");}

③test1.h代码如下:

void test(void);

④配置标题四的的task.json文化和launc.json文件

此时大家按下F5或者Ctrl+F5会发现,会报错,程序不会被执行

点击打开launch.json文件,此时界面如下:

会发现,在图上左边.json文件下没有tasks.json文件,在launch.json中也没有gdb执行路径和可执行文件路径。此时我们需要生成tasks.json文件并修改,然后修改launch.json文件

1.生成task.json文件

点击终端--->配置--->使用模板创建tasks.json文件-->others

此时左边.json文件夹下有了tasks.json文件,以及tasks.json中如下。默认的比较简单,也和第四步有点不一样,我们直接复制第四步的tasks.json多文件下的配置。

即:tasks.json改为如下配置:

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件","command": "C:\\mingw64\\bin\\gcc.exe",//安装的gcc路径,我的解压后是放在c盘根目录下"args": ["-fdiagnostics-color=always","-g",// "${file}","${fileDirname}\\*.c",//编译当前目录下,所有的.c文件// "${fileDirname}\\test.c",//编译当前目录下test.c文件,这种是指定编译哪一个,为了方便,直接编译所有,选上面一种"-o",// "${fileDirname}\\${fileBasenameNoExtension}.exe","${fileDirname}\\a.exe",//由于是多文件,编译后生成的可执行文件名为a.exe,这个名字再launch.json中要用""],"options": {"cwd": "C://mingw64//bin/"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}
2.修改launch.json:

复制第四步的launch.json多文件下:

{"version": "0.2.0","configurations": [{"name": "C/C++ Runner: Debug Session","type": "cppdbg","request": "launch","args": [],"stopAtEntry": false,"externalConsole": false,//如果想使用外部控制台,改为true即可"cwd": "c:/Users/Xiasir/Desktop/error",// "program": "${fileDirname}\\${fileBasenameNoExtension}.exe","program": "${fileDirname}\\a.exe",//在tasks.json中生成的可执行文件a.exe,a是可执行文件名,由我们自己定义"MIMode": "gdb","miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//调试器gdb的执行路径,我的mingw64安装在C盘,根据你自己的确定"setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

⑤编译代码

配置完tasks.json和launch.json文件后,此时按下F5,仍然没法调试,会报错如下:

报错找不到launch.json文件中的可执行文件a.exe。

因为编译器此时并没有进行编译,F5是调试,此时并没有编译。所以得先编译一次,生成可执行文件a.exe。

1.生成可执行文件a.exe

此时点击 终端->运行生成任务,也可按快捷键ctrl+shift+b生成可执行文件a.exe

2.运行可执行文件a.exe

执行方式一:此时再按下F5,就会顺利执行a.exe文件,执行结果如下:

执行方式二:在vscode内置终端下,输入命令.\a.exe也可执行。

六、总结

通过这一篇文章看下来,会觉得vscdoe配置起来非常的麻烦,确实不如集成开发环境好用,但是vscode这主题很舒服,看着方便。折腾下来,发现配置也是按照代码编译原理的逻辑来配置的。

首先是程序员编写代码,然后调用编译器gcc编译成可执行文件,最后调试时调用gdb进行调试。

1.因此在编译时需要指定:需要编译的源文件,gcc的位置,编译后生成的可执行文件名,tasks.json中完成。

2.在调试时需要指定:可执行文件名,调试器gdb的路径。在launch.json中完成。

相关文章:

Vscode搭建C语言多文件开发环境

一、文章内容简介 本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件&#xff0c;以及vscode必备插件&#xff0c;最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多&#xff0c;建议大家在阅读时使用电脑阅读&#xff0c;按照目录…...

自定义 C++ 编译器的调用与管理

在 C 项目中&#xff0c;常常需要自动化地管理编译流程&#xff0c;例如使用 MinGW 或 Visual Studio 编译器进行代码的编译和链接。为了方便管理不同编译器和简化编译流程&#xff0c;我们开发了一个 CompilerManager 类&#xff0c;用于抽象编译器的查找、命令生成以及执行。…...

时间管理系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…...

用SparkSQL和PySpark完成按时间字段顺序将字符串字段中的值组合在一起分组显示

用SparkSQL和PySpark完成以下数据转换。 源数据&#xff1a; userid,page_name,visit_time 1,A,2021-2-1 2,B,2024-1-1 1,C,2020-5-4 2,D,2028-9-1 目的数据&#xff1a; user_id,page_name_path 1,C->A 2,B->D PySpark&#xff1a; from pyspark.sql import SparkSes…...

Sentinel 学习笔记3-责任链与工作流程

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏&#xff0c;原文地址如下&#xff1a; https://blog.csdn.net/baidu_28523317/category_10400605.html 上一篇梳理了概念与核心类&#xff1a;Sentinel 学习笔记2- 概念与核心类介绍-CSDN博客 补一个点&#xff1a;…...

Latex 转换为 Word(使用GrindEQ )(英文转中文,毕业论文)

效果预览 第一步&#xff1a; 告诉chatgpt&#xff1a; 将latex格式中的英文翻译为中文&#xff08;符号和公式不要动&#xff09;,给出latex格式第二步&#xff1a; Latex 转换为 Word&#xff08;使用GrindEQ &#xff09; 视频 https://www.bilibili.com/video/BV1f242…...

使用Chat-LangChain模块创建一个与用户交流的机器人

当然&#xff01;要使用Chat-LangChain模块创建一个与用户交流的机器人&#xff0c;你需要安装并配置一些Python库。以下是一个基本的步骤指南和示例代码&#xff0c;帮助你快速上手。 安装依赖库 首先&#xff0c;你需要安装langchain库&#xff0c;它是一个高级框架&#x…...

国家认可的人工智能从业人员证书如何报考?

一、证书出台背景 为进一步贯彻落实中共中央印发《关于深化人才发展体制机制改革的意见》和国务院印发《关于“十四五”数字经济发展规划》等有关工作的部署要求&#xff0c;深入实施人才强国战略和创新驱动发展战略&#xff0c;加强全国数字化人才队伍建设&#xff0c;持续推…...

【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析

文章目录 1. 计算机网络有哪些分类2. 计算机网络中协议与标准的区别3. 计算机网络拓扑有哪些结构4. 常用的网络设备有哪些&#xff0c;分属于OSI的哪一层5. IEEE802局域网标准有哪些 【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析 1. 计算机网络有哪些分类 计算…...

每日十题八股-2024年12月19日

1.Bean注入和xml注入最终得到了相同的效果&#xff0c;它们在底层是怎样做的&#xff1f; 2.Spring给我们提供了很多扩展点&#xff0c;这些有了解吗&#xff1f; 3.MVC分层介绍一下&#xff1f; 4.了解SpringMVC的处理流程吗&#xff1f; 5.Handlermapping 和 handleradapter有…...

网络方案设计

一、网络方案设计目标 企业网络系统的构成 应用软件 计算平台 物理网络及拓扑结构 网络软件及工具软件 网络互连设备 广域网连接 无论是复杂的&#xff0c;还是简单的计算机网络&#xff0c;都包括了以下几个基本元素 &#xff1a; 应用软件----支持用户完成专门操作的软件。…...

学习记录:electron主进程与渲染进程直接的通信示例【开箱即用】

electron主进程与渲染进程直接的通信示例 1. 背景&#xff1a; electronvue实现桌面应用开发 2.异步模式 2.1使用.send 和.on的方式 preload.js中代码示例&#xff1a; const { contextBridge, ipcRenderer} require(electron);// 暴露通信接口 contextBridge.exposeInMa…...

【Java数据结构】ArrayList类

List接口 List是一个接口&#xff0c;它继承Collection接口&#xff0c;Collection接口中的一些常用方法 List也有一些常用的方法。List是一个接口&#xff0c;它并不能直接实例化&#xff0c;ArrayList和LinkedList都实现了List接口&#xff0c;它们的常用方法都很相似。 Ar…...

HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化

与传统标准动态范围&#xff08; SDR&#xff09;视频相比&#xff0c;高动态范围&#xff08; HDR&#xff09;视频由于比特深度的增加提供了更加丰富的亮区细节和暗区细节。最新的显示技术通过清晰地再现 HDR 视频内容使得为用户提供身临其境的观看体验成为可能。面对目前日益…...

71 mysql 中 insert into ... on duplicate key update ... 的实现

前言 这个也是我们经常可能会使用到的相关的特殊语句 当插入数据存在 唯一索引 或者 主键索引 相关约束的时候, 如果存在 约束冲突, 则更新目标记录 这个处理是类似于 逻辑上的 save 操作 insert into tz_test_02 (field1, field2) values (field11, 11) on duplicate …...

计算机网络-GRE Over IPSec实验

一、概述 前情回顾&#xff1a;上次基于IPsec VPN的主模式进行了基础实验&#xff0c;但是很多高级特性没有涉及&#xff0c;如ike v2、不同传输模式、DPD检测、路由方式引入路由、野蛮模式等等&#xff0c;以后继续学习吧。 前面我们已经学习了GRE可以基于隧道口实现分支互联&…...

你的第一个博客-第一弹

使用 Flask 开发博客 Flask 是一个轻量级的 Web 框架&#xff0c;适合小型应用和学习项目。我们将通过 Flask 开发一个简单的博客系统&#xff0c;支持用户注册、登录、发布文章等功能。 步骤&#xff1a; 安装 Flask 和其他必要库&#xff1a; 在开发博客之前&#xff0c;首…...

若依启动项目时配置为 HTTPS 协议

文章目录 1、需求提出2、应用场景3、解决思路4、注意事项5、完整代码第一步&#xff1a;修改 vue.config.js 文件第二步&#xff1a;运行项目第三步&#xff1a;处理浏览器警告 6、运行结果 1、需求提出 在开发本地项目时&#xff0c;默认启动使用的是 HTTP 协议。但在某些测试…...

学习思考:一日三问(学习篇)之匹配VLAN

学习思考&#xff1a;一日三问&#xff08;学习篇&#xff09;之匹配VLAN 一、学了什么&#xff08;是什么&#xff09;1.1 理解LAN与"V"的LAN1.2 理解"V"的LAN怎么还原成LAN1.3 理解二层交换机眼中的"V"的LAN 二、为何会产生需求&#xff08;为…...

[WiFi] WiFi 802.1x介绍及EAP认证流程整理

802.1X Wi-Fi 802.1X 是一种网络访问控制协议&#xff0c;常用于保护无线网络。它提供了一种基于端口的网络访问控制机制&#xff0c;主要用于在用户和网络之间建立安全的连接。以下是 802.1X 的一些关键特点&#xff1a; 认证框架 802.1X 使用 EAP&#xff08;可扩展认证协议…...

TrafficMonitor插件宝典:打造你的全能桌面监控中心

TrafficMonitor插件宝典&#xff1a;打造你的全能桌面监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 想要在桌面上实时监控股票行情、硬件状态、天气信息&#xff0c;却…...

智慧树自动刷课插件:3分钟完成安装的终极学习效率工具

智慧树自动刷课插件&#xff1a;3分钟完成安装的终极学习效率工具 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视频学习而烦恼吗&#xff1f…...

【文档编辑】打印小册子(一张A4纸4页内容)步骤

效果如下&#xff0c;使用“A4纸”打印变成“每一页是A5大小的翻页小册子”1、打开word格式说明书&#xff0c;另存为pdf格式&#xff08;如果文件是pdf格式忽略步骤1&#xff09; 2、用wps打开pdf文件 3、打印→打印方式&#xff1a;小册子→小册子子集&#xff1a;仅正面→装…...

UWB传统厘米级定位 VS 镜像视界AI无感定位|大模型融合视频孪生全面重塑全域空间感知

UWB传统厘米级定位 VS 镜像视界AI无感定位&#xff5c;大模型融合视频孪生全面重塑全域空间感知在全域空间高精度感知产业高速迭代进程中&#xff0c;室内外人员与目标定位技术逐步分化为两大主流发展路径&#xff0c;其一为深耕多年、依托硬件组网实现测距定位的传统UWB厘米级…...

KaTrain终极指南:用AI围棋教练快速提升你的棋艺水平

KaTrain终极指南&#xff1a;用AI围棋教练快速提升你的棋艺水平 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 你是否曾经在对局后感到困惑&#xff0c;不知道自己的失误究竟在哪…...

DiffSinger歌声合成:3大技术革新与完整部署指南

DiffSinger歌声合成&#xff1a;3大技术革新与完整部署指南 【免费下载链接】DiffSinger An advanced singing voice synthesis system with high fidelity, expressiveness, controllability and flexibility based on DiffSinger: Singing Voice Synthesis via Shallow Diffu…...

从登录页到仪表盘:手把手教你为Vue2+Element后台管理系统添加中英文切换

从登录页到仪表盘&#xff1a;Vue2Element后台管理系统国际化实战指南 当产品经理突然要求为已有后台管理系统添加多语言支持时&#xff0c;许多开发者会陷入手忙脚乱的境地。本文将分享一套经过实战检验的国际化方案&#xff0c;不仅能快速实现基础功能&#xff0c;还能解决那…...

抖音批量下载神器:douyin-downloader开源工具完整使用指南

抖音批量下载神器&#xff1a;douyin-downloader开源工具完整使用指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback s…...

【独家首发】Midjourney 6.6+新增--depth-map指令实战手册:从单通道灰度图到可编辑景深层次(含Blender预处理模板)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Midjourney景深效果控制 景深&#xff08;Depth of Field&#xff09;是图像中清晰区域与虚化区域的过渡表现&#xff0c;在 Midjourney 中虽无原生 DSLR 式光圈参数&#xff0c;但可通过提示词工程、版本特性…...

Perplexity习语查询响应延迟超800ms?3个冷启动配置错误正在 silently 毁掉你的语言生产力

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity习语查询功能概览 Perplexity 的习语查询功能专为语言学习者与内容创作者设计&#xff0c;支持对英语中高频、多义、文化负载型习语进行上下文感知的精准解析。该功能不仅返回标准释义&#xff0c;还…...