我們在嵌入式開發的過程中,經常可以碰到在一些宏定義或者是程式碼段中使用了do {...} while(0)的語句,從語意上理解,do {...} while(0)內的邏輯就只執行一次,並沒有迴圈執行,粗略看來,似乎畫蛇添足了,那麼為什麼還需要在只執行一次的邏輯外面加上一層do {...} while(0)語句呢?實際上,在這些邏輯中使用do {...} while(0)的作用遠大於美化你的程式碼,下面就來看看實際的使用場景。
我們都知道,在程式中如果一些常數引數或者程式碼語句反覆出現,就可以使用宏定義來替代。預處理階段,對程式中所有出現的「宏名」,前處理器都會用宏定義中的字串替代,這稱為「宏替換」或「宏展開」。
這樣做可提高程式的通用性和易讀性,減少不一致性,一個較好的宏名可以更好的讓讀者理解常數引數的含義;同時程式易於修改,我們僅需要改變一個宏定義,就可以改變整個程式中出現的所有該常數或者語句。
但是有時可能程式程式碼段中,出現多條語句重複連續的使用,這樣我們就可以嘗試使用一個複雜的宏來替換。你有可能會這樣定義:
1 #define REPLACE_FUN() funA(); funB()
本文來自部落格園,作者:Sharemaker,轉載請註明原文連結:https://www.cnblogs.com/Sharemaker/p/17142670.html