do {...} while (0)

Michael ODonnell michael.odonnell at comcast.net
Sat Feb 7 09:56:16 EST 2009



> But if you change the macro to:
> #define b0rken(x) ({return x;})
> you will find that the compiler likes it again.

I mistakenly interpreted your statement that the two constructions
are equivalent:

> What I see confufsing is:
> do { ... } while(0);
		[...]
> { ... } would be equivalent to above


...to mean that you believe that they are generally interchangeable.
Since that do-while(0) trick is in fairly common usage (often inside
macros) I just wanted to illustrate a situation where they're not.



More information about the gnhlug-discuss mailing list