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

结构体struct类型定义的意义和一个vscode实用插件

最近,在看stm32的中间层LwIP的源码代码,对结构类类型定义struct有了一个新的认识,记录下来。另外,发现了一个比较好用的vscode插件也记录下来。

(1)结构体struct类型结构体类型定义。

首先,struct类型是因为某些实物的属性比较复杂,用某一个简单的类型无法描述,但是这些属性都是都是属于某一个实物,也是说本身就有在一个范围内的特性。我们都知道c语言的定义的变量都是定义在内存上,内存上的内存空间只有两种一种是相连的,另外就是不相连的。而结构体类型struct定义结构体成员变量本身就是在内存上相连的。也就是说那一众属性本身属于某一个需要描述的事物,对应的结构体类型定义的变量内部的成员变量本在在内存上是相连的。

我们都知道c语言的函数的本质是操作内存变量,因为c语言中比较常用的做法是这些内存变量打包成一个struct结构体类型,并定义对应结构体类型变量,这个结构体类型变量内部的成员在内存上本事就是相邻的,我们定义相关函数最常用的办法就是通过结构类指针类型变量去读写访问,通过对这些结构体内部成员变量读写不同的数值就实现了需要的功能(最直接的就是寄存器,寄存器的位段写入需要的数值就能操纵硬件实现不同功能,对应的真正结构体内存变量通过写入有效数据就可以在读它的时候进行判断就知道发生了什么事情,就可以指导访问其他函数,这样功能就实现了)。结构体实现变量打包,除了在硬件上像寄存器一样本身就是相连,还可以将某些模糊的属性变量进行打包成相邻的结构体内部成员变量。结构体的发明进一步约束简化了内存变量的布局分部,很大程度上简化了代码读写访问的复杂型。

(2)一个比较实用的vscode插件

最近,在读LwIP源码的时候遇到一个问题就是条件编译#if #else #end如果代码比较长,因为vscode是没有相关条件编译的折叠辅助线功能让我们一目了然条件变量在哪里结束,哪里分支了。

我发现一个插件名字叫“IFDEF Pathfinder”安装后能够在条件变量右面有不同颜色的相关提示,这样我们就可以通过快速下拉代码找到对应宏定义在哪里结束了。

这样我们就可以比较容易找到条件编译在哪里结束了(虽然也没有相关折叠功能好用)。

http://www.jsqmd.com/news/299445/

相关文章:

  • 基于51单片机超声波智能垃圾桶控制系统
  • SpringBoot - yml配置文件
  • 【毕业设计】基于springboot的社会养老平台的设计与实现(源码+文档+远程调试,全bao定制等)
  • Hadoop数据过滤:高效查询的预处理
  • 【毕业设计】基于springboot的社区志愿者服务系统(源码+文档+远程调试,全bao定制等)
  • 【课程设计/毕业设计】 基于Spring Boot的智能养老服务平台基于springboot的社会养老平台的设计与实现【附源码、数据库、万字文档】
  • Java毕设项目推荐-基于springboot的社会养老平台的设计与实现 基于Spring Boot的智能养老服务平台【附源码+文档,调试定制服务】
  • 【计算机毕业设计案例】基于Springboot的智慧老年人中心服务平台的设计与实现基于springboot的社会养老平台的设计与实现(程序+文档+讲解+定制)
  • AI大模型薪资暴涨!北京人社局报告曝光2026年高薪趋势,程序员弯道超车指南
  • 【2025年AI大模型岗面试面经】常见面试题130道!Attention机制与Transformer详解:大模型面试通关必备指南
  • 数字员工与熊猫智汇是什么?主要提供哪些智能化解决方案?
  • 一文吃透网络传输七层协议:从原理到实际应用
  • Java毕设选题推荐:基于SpringBoot+Vue的智慧养老服务平台基于springboot的社会养老平台的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 计算机Java毕设实战-基于springboot的社会养老平台的设计与实现基于SpringBoot+Vue的智慧养老服务平台【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 亲测好用10个AI论文写作软件,继续教育学生必备!
  • Java毕设项目:基于springboot的社会养老平台的设计与实现(源码+文档,讲解、调试运行,定制等)
  • Java毕设项目:基于springboot的社区志愿者服务系统(源码+文档,讲解、调试运行,定制等)
  • 深入解析:RHCE Day2 时间管理服务器 NFS服务器
  • JMeter吞吐量控制器用法详解:精准模拟用户行为比例与流量分配 - 实践
  • Java计算机毕设之基于springboot的社会养老平台的设计与实现基于Springboot的智慧老年人中心服务平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 还原论霸权是反真共识,反人类
  • .NET 8 高并发避坑指南:彻底搞懂 Async/Await、多线程与 Channel 黄金模式
  • MySQL升级8.0.44后登录报错-系统表不支持MyISAM存储引擎
  • 多策略黑猩猩优化算法研究及其工程应用 黄倩 MATLAB代码 针对基本黑猩猩优化算法存在的依赖...
  • 吐血推荐8个AI论文网站,专科生轻松搞定毕业论文!
  • 小白也能学会!本地部署大模型全攻略:从CUDA配置到ChatGLM-6B运行
  • 小白也能学会!vLLM本地部署大模型完整教程
  • 一文读懂AI Agent:大模型时代的智能体技术与应用场景全解析,面了字节大模型岗
  • 深入理解Agentic RAG:从检索增强到智能体驱动的技术演进(建议收藏)
  • 深入理解LLM三大核心技术:Function Calling、MCP与A2A实战指南