do-while(0)宏结束时应该有分号吗?

时间:2018-01-04 12:43:44

标签: c

我可以看到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)

0 个答案:

没有答案