tech-misc archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: DEBUG work for fortune?
* Jeremy C. Reed <reed%reedmedia.net@localhost> [080321 20:25] 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.)
> 
> 
>  # ifdef DEBUG
> -# define     DPRINTF(l,x)    if (Debug >= l) fprintf x; else
> +# define     DPRINTF(l,x)    if (Debug >= l) fprintf x;
>  # undef              NDEBUG
>  # else
>  # define     DPRINTF(l,x)
> 
> 
> As I don't understand why that "else" is there, I didn't commit the above.
A better fix would be to code DPRINTF() as such:
# define DPRINTF(l,x)    \
do { if (Debug >= l) fprintf x; } while (0)
The reason for the empty else is to prevent the debug code
from causing ambiguous if constructs in the code.
The do-while(0) wraper will fix that.
-- 
- Alfred Perlstein
Home |
Main Index |
Thread Index |
Old Index