HAL库中do{...} while(0U) 宏定义的作用和意义

应部分老铁的要求,讲一些细节知识点。一来,我不用花费大量精力去写文章;二来,大家也不会因看文章觉得累。
1写在前面
很多初学者,以及有一定工作经验的朋友都不知道这个“do{...} while(0u)”作用和意义,甚至觉得这样写的代码复杂且没意义。
相信使用过stm32cube hal库的朋友都知道,源码里面有许多do{...} while(0u)的宏定义语句。
今天讲的主要知识点是:hal库中do{...} while(0u)作用和意义。
当然,do{...} while(0u)不限于hal库中,适用于很多地方。
2
hal库中do{} while(0u)宏定义
在hal库中,很多.h文件都有do{...} while(0u)这样的宏定义,比如:在stm32f1xx_hal_rcc.h中,使能gpio时钟:
对比在ll库中时钟使能代码,如下:
很多人只会觉得ll库这种函数比较合理,而想不明白为什么hal会使用这种“do{...} while(0u)”宏定义的语句。
下一章节重点讲述一下这种“do{...} while(0u)”宏定义的作用和意义。
3
do{...} while(0u)宏定义的作用和意义
使用do{...} while(0u)这种方式其实有几种重要作用,下面简单说几条:
1.编译出错
不使用do{}while:
使用大括号,多一个分号:
使用do{...} while(0u):
大家对比以上几种,你觉得哪一种合理?
2.避免goto跳转语句带来问题
不使用do{}hwile(0):
使用do{}hwile(0):
大家再对比以上两种,发现了什么问题?
我这里也不再继续举例说明了,大家可以上网了解,其实还有很多重要意义和作用。
怎么说呢,点到为止,希望对你有启发。

AW2403T无线数字音频发射模块
AMD Q1季度营收17.9亿美元,较上年同期增长40%
华润上华举办与京津IC设计者共迎中国‘芯’热点研讨会
c语言中的SCL-CONTIUNE语句
uPD720110a -Hub集线器控制芯片
HAL库中do{...} while(0U) 宏定义的作用和意义
iPad Pro也代替windows电脑来办公吗?和在笔记本上打字已经没有什么区别
怎么查看嵌入式Linux开发中各个线程的运行情况
基于WLAN散热问题的LDO解决方案
东风雷诺力压途观,内饰给人一种非常高档的感觉,低调而不失内涵,给人一种非常帅气的感觉
浅谈PCBA加工中对电容元件选用应该考虑的因素
信步科技SV1-19016-C主板规格英文版
欧瑞博T1C智能门锁评测 家居与智能还有多远
解析未来AR眼镜代替手机的可行性
机器学习和信号处理 | Feel 你的情绪、想法和感受
服务器数据恢复-ESX SERVER常见故障的数据恢复方案
卓视智通顺利通过健康安全管理体系等四项认证
Power-One推出DOSA兼容的1/16砖形DC/DC转
小米MIX2最新消息:小米MIX 2为想象而来,又颠覆想象!
pcb维修视频教程