Re: pr_debug and "if (0)" statement

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

 



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


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux