關(guān)注+星標(biāo)公眾號(hào),不錯(cuò)過(guò)精彩內(nèi)容

作者 | strongerHuang
微信公眾號(hào) | 嵌入式專欄
在一些項(xiàng)目中,我們可能看到過(guò)很多,在學(xué)習(xí)的時(shí)候沒(méi)有見(jiàn)過(guò)的代碼,比如 do{...} while(0U) 這種代碼,在我們學(xué)習(xí)的時(shí)候可能很少見(jiàn),但實(shí)際項(xiàng)目中卻存在很多類似代碼。
今天就來(lái)講講關(guān)于 do{...} while(0U) 的內(nèi)容。
1
前言很多初學(xué)者都不知道這個(gè)“do{...} while(0U)”作用和意義,甚至覺(jué)得這樣寫的代碼復(fù)雜且沒(méi)意義。
2
HAL庫(kù)中do{} while(0U)宏定義在HAL庫(kù)中,很多.h文件都有do{...} while(0U)這樣的宏定義,比如:在stm32f1xx_hal_rcc.h中,使能GPIO時(shí)鐘:

對(duì)比在LL庫(kù)中時(shí)鐘使能代碼,如下:

3
do{...} while(0U)宏定義的作用和意義使用do{...} while(0U)這種方式其實(shí)有幾種重要作用,下面簡(jiǎn)單說(shuō)幾條:
1.編譯出錯(cuò)
不使用do{}while:

使用大括號(hào),多一個(gè)分號(hào):

使用do{...} while(0U):

大家對(duì)比以上幾種,你覺(jué)得哪一種合理?
2.避免goto跳轉(zhuǎn)語(yǔ)句帶來(lái)問(wèn)題
不使用do{}hwile(0):

使用do{}hwile(0):

大家再對(duì)比以上兩種,發(fā)現(xiàn)了什么問(wèn)題?
我這里也不再繼續(xù)舉例說(shuō)明了,大家可以上網(wǎng)了解,其實(shí)還有很多重要意義和作用。
怎么說(shuō)呢,點(diǎn)到為止,希望對(duì)你有啟發(fā)。
后臺(tái)回復(fù)『嵌入式C語(yǔ)言』『嵌入式軟件設(shè)計(jì)與開(kāi)發(fā)』閱讀更多相關(guān)文章。

點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。