在一些项目中,我们在学习的时候可能会看到很多没见过的代码,比如do{...}While(0U)这种代码在我们学习的时候可能很少见,但是在实际项目中类似的代码很多。今天我们来谈谈do{...}while(0U)。一、前言很多初学者不了解“do{...}while(0U)”的作用和含义,甚至觉得这样写的代码复杂无意义。相信用过STM32CubeHAL库的朋友都知道,源码中有很多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)编译错误Donotusedo{}while:usecurlybraces,moreonesemicolon:usedo{...}while(0U):对比上面,你觉得哪个是合理的?(2)避免goto跳转语句带来的问题不要使用do{}hwile(0):使用do{}hwile(0):比较以上两者,你发现什么问题?这里就不继续举例了。您可以在线了解它。其实有很多重要的意义和作用。怎么说呢,到此为止,希望对你有所启发。
