Mailing List Archive

Support open source code!


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tlug: GCC compiler question



I've been looking through some of the kernel source, and I keep seeing
things like the following:-

#define spin_lock_init(x)       do { (x)->lock = 0; } while(0)

What's the point of the do {} while(0) bit? Why not just

#define spin_lock_init(x)       { (x)->lock = 0; }

or even

#define spin_lock_init(x)       (x)->lock = 0;

The only point I can see is causing compile-time errors for misuse, such
as

   z += spin_lock_init(x);

which would compile under the 3rd alternative above. And who would
really write such code anyway? And why not the 2nd alternative?

Neil.
---------------------------------------------------------------
Next Nomikai: 20 November, 19:30 Tengu TokyoEkiMae 03-3275-3691
Next Meeting: 12 December, 12:30 Tokyo Station Yaesu central gate
---------------------------------------------------------------
Sponsor: PHT, makers of TurboLinux http://www.pht.co.jp


Home | Main Index | Thread Index

Home Page Mailing List Linux and Japan TLUG Members Links