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)