I can see the do{}while(0) guard MACRO being extensively used and while some cases it is defined with a ; at the end where as some are defined without a ;
Which one is more correct with ; or without it
#define FOO(x) \
do { \
if( x > 0 ) \
bar(x); \
else \
done(x); \
}while(0);
or
#define FOO(x) \
do { \
if( x > 0 ) \
bar(x); \
else \
done(x); \
}while(0)