女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

do{...} while(0U) 這種代碼的作用和意義

strongerHuang ? 來源:strongerHuang ? 作者:strongerHuang ? 2021-06-04 14:00 ? 次閱讀

在一些項目中,我們可能看到過很多,在學習的時候沒有見過的代碼,比如 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時鐘

65bcab4a-c4b8-11eb-9e57-12bb97331649.jpg

對比在LL庫中時鐘使能代碼,如下:

65c9c73a-c4b8-11eb-9e57-12bb97331649.jpg

很多人只會覺得LL庫這種函數比較合理,而想不明白為什么HAL會使用這種“do{...} while(0U)”宏定義的語句。 下一章節重點講述一下這種“do{...} while(0U)”宏定義的作用和意義。

3

do{...} while(0U)宏定義的作用和意義

使用do{...} while(0U)這種方式其實有幾種重要作用,下面簡單說幾條:

1.編譯出錯

不使用do{}while:

65d46a14-c4b8-11eb-9e57-12bb97331649.png

使用大括號,多一個分號:

65ebcb14-c4b8-11eb-9e57-12bb97331649.jpg

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

65fc6e6a-c4b8-11eb-9e57-12bb97331649.jpg

大家對比以上幾種,你覺得哪一種合理?

2.避免goto跳轉語句帶來問題

不使用do{}hwile(0):

6606c112-c4b8-11eb-9e57-12bb97331649.jpg

使用do{}hwile(0):

6622dcbc-c4b8-11eb-9e57-12bb97331649.png

大家再對比以上兩種,發現了什么問題?

我這里也不再繼續舉例說明了,大家可以上網了解,其實還有很多重要意義和作用。

怎么說呢,點到為止,希望對你有啟發。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4369

    瀏覽量

    64190
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70253
  • GPIO
    +關注

    關注

    16

    文章

    1271

    瀏覽量

    53570
  • HAL
    HAL
    +關注

    關注

    2

    文章

    72

    瀏覽量

    12980

原文標題:項目中大量使用do{...} while(0U)的作用和意義

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發表于 04-27 08:05

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發表于 04-24 07:50

    STM32U5 IWDG的提前喚醒中斷無法在STOP模式下觸發怎么解決?

    was resumed from stop 2 */ if(__HAL_PWR_GET_FLAG(PWR_FLAG_STOPF) == 0U) {} /* Clear stop flag
    發表于 04-22 08:14

    STM32H743程序啟動卡在了while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U),怎么解決?

    使用了STM32H743的MCU,程序啟動卡在了while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == 0U),外部低速時鐘用示波器測量可以正常起振,電容容值12pF。
    發表于 03-14 07:00

    javascript:void(0) 的作用是什么

    javascript:void(0) 在 HTML 和 JavaScript 中是一個常見的表達式,主要用來創建一個無操作的鏈接(通常是 標簽)或者阻止默認事件處理。具體來說,它的作用有以下幾點
    的頭像 發表于 12-31 15:55 ?1866次閱讀

    養成良好的編程習慣|堆內存初值不一定是0

    );??? char ch; int i = 0; while ((ch = getchar()) != '') { *(s + i++) = ch; } printf("%s", s); return 0
    的頭像 發表于 12-18 09:14 ?336次閱讀

    DDC112U數據轉換,轉換結果一直是0,是什么原因導致的?

    _data&=0x0fffff; ddc112u_data=0; n=0; break; } } f=!f; GPIO_WriteBit(GPIOE,GPIO_Pin_11
    發表于 11-20 07:21

    物聯網中RTU的DO是什么?如何實現DO相關軟件功能?

    DO 即數字輸出(DO, Digital Output),用于輸出二進制信號,可以控制繼電器、燈光、電機啟停等。數字輸出同樣只能有兩種狀態:高電平或低電平。
    的頭像 發表于 09-29 11:48 ?1272次閱讀
    物聯網中RTU的<b class='flag-5'>DO</b>是什么?如何實現<b class='flag-5'>DO</b>相關軟件功能?

    GD32F4xx_Demo_Suites里的PMU_Sleep_Wakeup如何從串口從deepsleep狀態喚醒?

    (EVAL_COM0_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,EVAL_COM0_RX_PIN); nvic_irq_enable(EXTI10_15_IRQn, 2U,
    發表于 09-27 06:33

    請問平衡電阻只對雙極運放有作用,對mos型的運放意義不大?

    1.請問平衡電阻只對雙極運放有作用,對mos型的運放意義不大?? 2.在深度負反饋條件下,失調在輸出端不明顯?? 謝謝
    發表于 09-23 06:34

    DO傳感器有什么作用

    在環境保護與水資源管理日益重要的今天,溶解氧作為評估水質健康狀況的關鍵指標之一,其準確、快速的監測對于保護水生態系統、預防水體污染及指導水處理工藝具有重要的價值。隨著科技的進步,一種基于熒光法測量原理的DO傳感器正逐步成為水質監測領域的重要工具。
    的頭像 發表于 09-20 16:22 ?606次閱讀

    使用PIC32MK多電機開發板例程時,用PICkit3將例程燒寫進去以后,會卡在ADC初始化是為什么?

    == 0U) // Wait until the reference voltage is ready { /* Nothing to do */ } 請問這個是為什么呢?
    發表于 07-26 06:53

    PSOC 4200M看門狗計時器沒有重置,請問問題出在哪里?

    哪里? #include #include #define LED_ON (0u) #define LED_OFF (1u) // 全局變量 //uint8 ledState = LED_OFF
    發表于 07-22 08:26

    ESP8266 I2C通信故障怎么解決?

    the \'$\' in frameLength_u16 tries */ { counter_u16 = 0u; gnrmcFrame_tu8[counter_u16] = i2c
    發表于 07-19 06:50

    能源物聯網的作用意義

    和信息化。其作用意義主要體現在以下幾個方面: 1. 提高能源利用效率:通過實時監測和數據分析,能源物聯網可以優化能源的生產和分配,減少浪費,提高能源利用效率。例如,智能電網可以根據需求動態調整電力供應,降低損耗。 2. 促進可再生能源發展:能源物聯網可以更
    的頭像 發表于 07-17 15:57 ?779次閱讀