From owner-freebsd-hackers@FreeBSD.ORG Sun Jan 30 22:37:07 2011 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 1233) id DBDFE1065672; Sun, 30 Jan 2011 22:37:07 +0000 (UTC) Date: Sun, 30 Jan 2011 22:37:07 +0000 From: Alexander Best To: Gary Jennejohn Message-ID: <20110130223707.GA40378@freebsd.org> References: <20110130172941.GA10701@freebsd.org> <20110130201142.09f4b998@ernst.jennejohn.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20110130201142.09f4b998@ernst.jennejohn.org> Cc: freebsd-hackers@freebsd.org Subject: Re: empty function macros X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Jan 2011 22:37:07 -0000 On Sun Jan 30 11, Gary Jennejohn wrote: > On Sun, 30 Jan 2011 17:29:41 +0000 > Alexander Best 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