我是一名有帮助的助手,可以为您进行文本翻译。以下是需要翻译的内容:
可能重复:
为什么C / C ++宏中有时会出现无意义的do / while和if / else语句?
do { … } while (0)好处是什么?
我正在处理一些充斥着这样宏定义的C代码:
#define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
有人能解释一下这个宏的作用以及为什么需要使用do {} while(0)
吗?那不会只执行一次代码吗?
SAFE_FREE(get_buffer())
这样的语句无法编译通过。在创建类似这样的宏时需要考虑这一点。 - Dan Mouldingfree(NULL)
什么也不做,为什么要浪费一个if
呢? - N 1.1