do while 0 起飛之路

2021-10-02 22:45:26 字數 1050 閱讀 6317

do

while(0

);

dowhile(0)的用途並不僅僅是優化你的**。經過一系列的調研和探索,我們總結出它的一些用途如下。

舉例如下:

#define __set_task_state(tsk, state_value)      \

do while (0)

使用dowhile(0)構造後的巨集定義不會受到大括號、分號等的影響,總是會按你期望的方式呼叫執行。

這裡你可能感到迷惑不解了,為什麼不用大括號直接把巨集包圍起來呢?為什麼非得使用do/while(0)邏輯呢?

例如,我們用大括號來定義巨集如下:

#define foo(x)
這對於上面舉的if語句的確能被正確擴充套件,但是如果我們有下面的語句呼叫呢:

if

(!feral)

foo(wolf)

;else

bin(wolf)

;

巨集擴充套件後將變成:

if

(!feral)

;else

bin(wolf)

;

大家可以看出,這就有語法錯誤了。

不多說直接上**

char

* data =

nullptr

;data =

(char*)

malloc

(2048);

dowhile(0

);if(data)

free

(data)

;data =

nullptr

;

//刷卡器

dowhile(0

);//接觸式讀卡器

dowhile(0

);//二代證

dowhile(0

);

如果發現dowhile(0)其他好的用處請與我分享!

巨集語句 do while 0

有時程式中重複出現某幾條語句,為了保證程式dry don t repeat yourself 需要將這幾條語句合併為一條語句.在c 中可以選擇用 inline,c語言沒有這個特性,但是可以用巨集實現.正確答案是用dowhile 0 實現,下面推理下為什麼這種方法最好吧.思路一 直接寫在一起 比如要將...

do while 0 用法分析

在許多c c 巨集定義中我們會看到巨集 包含在do while迴圈或者if else語句裡,例如 define m x do while 0 define m x if 1 else 那麼這種用法有什麼好處呢?這種用法最大的好處是增強巨集定義 的魯棒性,儘管使得程式稍稍變得更加複雜。為了加快專案開發...

使用do while 0 的好處

看到乙個比較好的帖子,給大家分享下!cpp view plain copy define lfw x,y do while 0 cpp view plain copy api while 0 1.替代 實現區域性作用域.在一些c的實現裡也可以用.2.避免使用goto,用break做跳出.當你執行一段...