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

开发 后端
do{...} while(0U) 这种代码,在我们学习的时候可能很少见,但实际项目中却存在很多类似代码。今天就来讲讲关于 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):

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

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

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

 

责任编辑:庞桂玉 来源: C语言与C++编程
相关推荐

2024-02-26 12:13:32

C++开发编程

2020-07-08 16:10:42

do{}while(0代码语言

2022-10-28 07:38:06

Javawhile循环

2019-03-25 10:30:19

开发技能代码

2009-06-24 17:34:58

使用JSF的经验

2021-11-01 11:39:51

物联网大数据分析IoT

2020-10-27 14:15:42

SpringBoot

2020-07-23 08:18:27

C语言执行循环体条件

2009-06-29 15:51:48

Spring容器

2020-11-17 09:46:27

物联网

2011-09-05 14:26:43

PhoneGap插件

2022-01-17 21:08:54

Python 循环结构

2022-03-08 06:31:41

DebugRelease

2023-11-12 23:14:05

函数C 语言

2013-11-27 16:32:51

宕机kswapd0CPU

2021-08-10 08:43:16

蓄电池UPS供电系统

2018-05-02 09:18:17

Linux技巧嵌入式

2023-10-27 10:16:17

前端项目Rust

2023-04-21 10:08:00

版本工具依赖关系

2023-11-30 09:00:00

TypeScript开发
点赞
收藏

51CTO技术栈公众号