The following url say the reason.
http://c-faq.com/cpp/multistmt.html
In case a macro having multi-lines is used in if-else statement without brace (i.e. '{~}'), this do {} while is required.
Assum that there is a multi line macro as bellows,
#define A_MACRO a++; \
b++; \
c++;
The following code will make compile-error.
if( bFlag) A_MACRO;
else B_MACRO;
But the following macro does not make compile-error by do {} while(false).
#define A_MACRO do { a++; \
b++; \
c++; } while(false)
Saturday, September 15, 2007
do {} while(false) for macro
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment