Re: DEBUG work for fortune?

Alfred Perlstein <[email protected]>
Newsgroups gmane.os.netbsd.devel.general
Message-ID <[email protected]>
* Jeremy C. Reed <[email protected]> [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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.