On Fri, Mar 21, 2008 at 09:14:47PM -0500, Jeremy C. Reed
wrote:
> Here is my error:
>
> fortune.c:544: warning: empty body in an
else-statement
> (repeated many times)
>
> Here is the code (gcc with -E to preprocess only):
>
> if (Debug >= 1) fprintf ((&__sF[2]),
"adding file "%s"n", path); else;
>
>
> What is the purpose of the following "else;"
which I removed so I could
> compile with debugging? (It is from pre-NetBSD code.)
> [...]
> -# define DPRINTF(l,x) if (Debug >= l) fprintf x;
else
> +# define DPRINTF(l,x) if (Debug >= l) fprintf x;
It is probably so code like
if (lose)
DPRINTF(3, ("losing badlyn"));
else
DPRINTF(3, ("still winningn"));
doesn't expand to the wrong thing.
It is probably better replaced with something like
#define DPRINTF(l,x) (Debug >= (l) ? fprintf x :
(void)0)
or the do { } while (0); form.
It might also be nice to change it to a varargs macro, but
that would
require removing the extra parens from all the call sites.
--
David A. Holland
dholland netbsd.org
|