项目中大量使用do{...} while(0U)的作用和意义

在一些项目中,我们可能看到过很多,在学习的时候没有见过的代码,比如 do{...} while(0U) 这种代码,在我们学习的时候可能很少见,但实际项目中却存在很多类似代码。

今天就来讲讲关于 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):

大家再对比以上两种,发现了什么问题?

我这里也不再继续举例说明了,大家可以上网了解,其实还有很多重要意义和作用。

怎么说呢,点到为止,希望对你有启发。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值