Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jan 2011 22:37:07 +0000
From:      Alexander Best <arundel@freebsd.org>
To:        Gary Jennejohn <gljennjohn@googlemail.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: empty function macros
Message-ID:  <20110130223707.GA40378@freebsd.org>
In-Reply-To: <20110130201142.09f4b998@ernst.jennejohn.org>
References:  <20110130172941.GA10701@freebsd.org> <20110130201142.09f4b998@ernst.jennejohn.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun Jan 30 11, Gary Jennejohn wrote:
> On Sun, 30 Jan 2011 17:29:41 +0000
> Alexander Best <arundel@freebsd.org> wrote:
> 
> > hi there,
> > 
> > i noticed freebsd has a few of the following macros:
> > 
> > #define FUNC(sb)
> > 
> > when you do something like
> > 
> > if (cond)
> >     FUNC(i)
> > 
> > the compiler complains about an if statement with an empty body. any sensible
> > way of dealing with this issue?
> > 
> > i saw some reiserfs code which does the following to silence compilers:
> > 
> > #define FUNC(sb) do { } while (0)
> > 
> 
> What happens if you treat it like a real function call and put ';'
> after it?

sorry this was my fault. it should have actually been:

if (cond)
    FUNC(i);

basically, since FUNC evaluates to nothing this results in

if (cond)
    ;

while gcc doesn't complain, clang does.

cheers.
alex

> 
> -- 
> Gary Jennejohn (gj@)

-- 
a13x



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110130223707.GA40378>