[RFC]: (void)0 instead of empty defines

Roman Divacky rdivacky at freebsd.org
Mon Jun 15 18:58:19 UTC 2009


On Mon, Jun 15, 2009 at 11:38:33AM -0700, Sam Leffler wrote:
> Roman Divacky wrote:
> >hi
> >
> >in many places we do something like
> >
> >#ifdef SOMETHING
> >#define FOO some_code
> >#else
> >#define FOO
> >#endif
> >
> >
> >I propose to change the second FOO to (void)0 in many places to
> >
> >1) let this compile cleanly with clang. Clang warns in many places
> >about
> >		if (cond)
> >			FOO;
> >
> >which has empty if body
> >
> >2) enforces ; at the end of the expression
> >
> >this does not cost us nothing so I hope this change is ok.
> >
> >patch at: http://www.vlakno.cz/~rdivacky/void-zero.patch                   
> >
> >what do you think?
> >
> >roman
> >
> >p.s. there's also ACPI_DEBUG_PRINT in contrib/acpica which I hope
> >jkim might handle
> >  
> 
> Are you saying that:
> 
> if (cond)
>    ;
> 
> is considered worthy of a warning by the compiler?  Is it just "if" or 
> all conditional control constructs (e.g. while)?
> 
> I can image many instances of this construct arising from debugging 
> facilities.  This sounds like a stupid restriction and I would argue we 
> should just disable the warning.

it already found a bug in csup (recently fixed by lulf). It sure can be
disabled but I'd like it to be discussed a little bit more as it already
proved to be useful.

roman


More information about the freebsd-current mailing list