Re: asm/unistd.h

Andreas Schwab (schwab@suse.de)
05 Apr 2001 16:45:44 +0200


Joseph Carter <knghtbrd@debian.org> writes:

|> On Thu, Apr 05, 2001 at 09:06:20AM -0400, Bart Trojanowski wrote:
|> > So you ask: "why not just use a { ... } to define a macro". I don't
|> > remember the case for this but I know it's there. It has to do with a
|> > complicated if/else structure where a simple {} breaks.
|>
|> This doesn't follow in my mind. I can't think of a case where a { ... }
|> would fail, but a do { ... } while (0) would succeed. The former would
|> also save a few keystrokes.

Try this and watch your compiler complaining:

#define foo() { }
#define bar() do { } while (0)
void mumble ()
{
if (1) foo(); else bar();
if (2) bar(); else foo();
}

Andreas.

-- 
Andreas Schwab                                  "And now for something
SuSE Labs                                        completely different."
Andreas.Schwab@suse.de
SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/