RE: do { } while (0) question

From: Peter Zijlstra
Date: Tue Aug 01 2006 - 05:37:12 EST


On Tue, 2006-08-01 at 02:03 -0700, Hua Zhong wrote:
> > #if KILLER == 1
> > #define MACRO
> > #else
> > #define MACRO do { } while (0)
> > #endif
> >
> > {
> > if (some_condition)
> > MACRO
> >
> > if_this_is_not_called_you_loose_your_data();
> > }
> >
> > How do you want to define KILLER, 0 or 1? I personally choose 0.
>
> Really? Does it compile?

No, and that is the whole point.

The empty 'do {} while (0)' makes the missing semicolon a syntax error.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/