/*
do while 0 的用法和意義
*///最近在很多**裡都看到do while 0的身影。乍一看,這不是沒有做任何事情嗎?為什麼還要這樣寫。難道這是多此一舉的嗎?當然不是。
輔助定義複雜的巨集,避免引用的時候出錯:
//假設要定義乙個這樣的巨集
#define dosomething() \
func1();\
func2();
//呼叫
int a = 3;
if(a > 3)
dosomething()
//展開其實是這樣的
if (a > 3)
func1();
func2();// 不管怎樣fun2都要執行了
//如果包裹起來,展開的時候就應該是這樣
if(a > 3)
//兩個函式都能被執行到
dowhile (0);
避免使用goto對程式流進行統一的控制:
doif(i = func2())
}while(0);
避免空巨集引起的warning
//核心中由於不同架構的限制,很多時候會用到空巨集,在編譯的時候,空巨集會給出warning,為了避免這樣的warning,就可以使用do{}while(0)來定義空巨集:
#define emptymicro do{}while(0)
do while 0 的意義和用法
首先明確的是do while迴圈中,無論判斷條件是否滿足,do while 迴圈體內的 至少會執行一次。下文 linux核心和其他一些開源的 中,經常會遇到這樣的 dowhile 0 這樣的 一看就不是乙個迴圈,do.while表面上在這裡一點意義都沒有,那麼為什麼要這麼用呢?實際上,dowhile...
do while 0 的意義和用法
linux核心和其他一些開源的 中,經常會遇到這樣的 do while 0 這樣的 一看就不是乙個迴圈,do.while表面上在這裡一點意義都沒有,那麼為什麼要這麼用呢?實際上,dowhile 0 的作用遠大於美化你的 查了些資料,總結起來這樣寫主要有以下幾點好處 1 輔助定義複雜的巨集,避免引用的...
do while 0 的意義和用法
linux核心和其他一些開源的 中,經常會遇到這樣的 do while 0 這樣的 一看就不是乙個迴圈,do.while表面上在這裡一點意義都沒有,那麼為什麼要這麼用呢?實際上,dowhile 0 的作用遠大於美化你的 查了些資料,總結起來這樣寫主要有以下幾點好處 1 輔助定義複雜的巨集,避免引用的...