#define XXX do { } while(0) 宏定义结构的好处
1. 避免多语句宏的问题
// 有问题的情况
#define MACRO a = 1; b = 2;
if (condition)
MACRO; // a = 1; b = 2;; b = 2不受条件限制
else
do_something_else();
#define MACRO do { a = 1; b = 2; } while(0)
if (condition)
MACRO; // do { a = 1; b = 2; } while(0);
else
do_something_else();
2.防止宏重定义的问题
// 没问题
#define MACRO do { a = 1; b = 2; } while(0)
#define _MACRO MACRO //宏重定义
3. 确保语法正确,主要是最后的分号问题
本文来自博客园,作者:变秃了也就变强了,转载请注明原文链接:https://www.cnblogs.com/lichangyi/p/18239868