我可以看到do{}while(0)
保护MACRO被广泛使用,而有些情况下,它最后定义为;
,而某些定义没有;
哪一个更正确;
或没有它
#define FOO(x) \
do { \
if( x > 0 ) \
bar(x); \
else \
done(x); \
}while(0);
或
#define FOO(x) \
do { \
if( x > 0 ) \
bar(x); \
else \
done(x); \
}while(0)