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

结构体定义嵌套定义

typedef struct
{GPIO_TypeDef *CTRL; // 转换控制端口struct {uint32_t Channel;} WCH[2]; // 写端口TIM通道struct {void (*DMA_ClearFlag_TC)(DMA_TypeDef *DMAx);} RCH; // 读端口TIM通道
} AD4858_IOMap_TypeDef;

如上面的定义,
优点:
不必要在外部定义其他的结构体声明,更符合面向对象的设计思想。减少耦合性。
逻辑清晰,分组明确
减少命名冲突

缺点:增加编译器负担
可能导致误解
对于不熟悉这种嵌套结构体的开发者来说,可能会对代码的理解产生困难。例如,他们可能会误以为 WCH 和 RCH 是独立的结构体,而不是嵌套在 AD4858_IOMap_TypeDef 中的字段。

不支持直接初始化
在C语言中,嵌套结构体不能直接初始化。例如:

AD4858_IOMap_TypeDef myMap = {.CTRL = GPIOA,.WCH[0].Channel = 1,  // 错误:不能直接初始化嵌套结构体的字段
};

这种初始化方式会导致编译错误。需要通过逐层赋值来完成初始化:

AD4858_IOMap_TypeDef myMap;
myMap.CTRL = GPIOA;
myMap.WCH[0].Channel = 1;
http://www.xdnf.cn/news/9626.html

相关文章:

  • CRM系统的功能模块划分
  • Python编程4——函数
  • 点云保存为pcd的一个例子
  • 微前端架构设计与实战示例
  • 嵌入式仿真平台如何重塑I²C协议教学:以AT24C02实验为例
  • linux——TCP问题
  • 自举升压方法
  • 高通滤波和低通滤波
  • Wi-Fi 6E/7法规认证的要求
  • AAOS系列之(五) ---CarPowerService 电源管理模块分析
  • ros2--串口通信
  • Lesson 9 防火墙 iptables 和 firewalld
  • SpringBoot 自动装配原理深度解析:从源码到实践
  • csdn_export_md
  • Linux特殊符号
  • Linux下挂载目录如何进行操作
  • C# Datatable筛选过滤各方式详解
  • PCI SSC推出PIN合规服务商列表计划
  • WES(一)——文件准备
  • 机器学习:线性回归、损失函数、导数、偏导
  • 主题阅读输出-关于成年/成熟的认识-01-学习
  • vue3 项目运行 加载 白屏
  • 嵌入式JPEG图像加水印实战技巧
  • 自我觉察是成长的第一步,如何构建内心的平静
  • 仿真每日一练 | ABAQUS水滴入水分析
  • SWMM+HTWATER最新水文水动力模型应用
  • linux版本vmware修改ubuntu虚拟机为桥接模式
  • STM32:ESP8266 + MQTT 云端与报文全解析
  • 微信小程序关于截图、录屏拦截
  • 通义实验室开源针对RAG的预训练框架