#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. 确保语法正确,主要是最后的分号问题

posted @ 2024-06-09 18:47  变秃了也就变强了  阅读(2)  评论(0编辑  收藏  举报