開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
mips gcc
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
NO
問題(Question):
在realtek SDK裡看到這個
#define open_logs() do {} while(0)
還有這個 #define log_error_doc(req) do {} while(0)
雖然我知道一般在macro用do while(0)是要避免if出錯,不過這邊do的{}沒塞東西orz
所以到底有什麼用處呢?
作者:
bibo9901 (function(){})()
2016-05-11 17:39:00legacy code?
作者:
LPH66 (-6.2598534e+18f)
2016-05-11 19:50:00沒東西就代表真的沒東西, 也就是 no-op一個可能是如一樓說的舊程式碼的取代, 另一個可能像這名字應該是一些 log 的東西, 所以比較接近「刪去的除錯程式」也就是有可能原先這裡是一個除錯用程式碼把東西倒進 log 裡後來要放出去時要刪除這些除錯 log 所以取代成空敘述不過這種狀況理論上把 macro 改訂成空白應該也是可行的
我看過這樣寫來當假goto的...XDdo{...if(err) break;...}while(0)
如果訂成空白那如果有個if裡面只有print_log,那會變成空的if,若是又沒有大括號會有問題
常用來做假GOTO 由其是要檢查一堆又不太可能會出錯的*尤其
作者:
CaptainH (Cannon)
2016-05-11 23:34:00真有這需求幹嘛不直接用goto
作者:
Qbsuran (Qbsuran)
2016-05-11 23:48:001. 可以在區塊內宣告變數不影響外面 2.可以用break取代goto