On Wed, 2009-09-02 at 15:17 +0530, Anuz Pratap Singh Tomar wrote: > On Wed, Sep 2, 2009 at 2:30 PM, Bernd Petrovitsch <bernd@xxxxxxxxx> > wrote: > On Wed, 2009-09-02 at 13:31 +0530, Anuz Pratap Singh Tomar > wrote: > > that part of code wont be executed. [...] > Then why not simply use "do { } while (0)" or similar? > > [ > > On Wed, Sep 2, 2009 at 1:24 PM, luca ellero > <lroluk@xxxxxxxxx> wrote: > [...] > > can someone please explain me the meaning/benefits > of the "if > > (0)" statement? > #if 0 is equivalent to blank, this is done while preprocessing, this > type of macro is used commonly to define some sort of debug(print > statement) > and if i am not wrong do{}while(0) will execute atleast once. Yes, of course. Sorry, I meant an empty "do{}while(0)" (or similar expression) which evaluates as a syntactic correct C expression. BTW the "if(0)" above (and "#if 0" and an empty "do{}while(0)") have also the issue that side effects (function calls, ++, --, += -=, ...) in the parameters of the printk() get lost (which may be good[0] or bad). That shouldn't be a problem in the Linux kernel as that is generally avoided but in general that maybe a problem. Bernd [0]: It may be even good if the side effects are just there for the printk() as such (e.g. formatting some data into a string just for the printk/syslog/printf) but irrelevant for the "normal" program flow. -- Firmix Software GmbH http://www.firmix.at/ mobil: +43 664 4416156 fax: +43 1 7890849-55 Embedded Linux Development and Services -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ