开发平台(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