On Sat, Jul 29, 2006 at 07:33:03PM -0400, Simon Boulet wrote:
> After a couple hours debugging code, I figured our an if() somewhere  
> had a trailing ;  like this:
> 
>                 if (memcmp(p, COMMUNITY, strlen(COMMUNITY)) != 0);
>                         continue; /* failed */
> 
> The code above will always reach "continue" even when memcmp() == 0.
> 
> I was surprised to see gcc doesn't report anything, I would expect a  
> "statement has no effect" warning.

But it is common to have an empty action on a condition.  You'll often
see code like

    if (condition) 
        /* nothing */;

or more usually

    if (condition) { 
        /* nothing */;
    }

or even more usually

    if (condition) {
       INVOKE_MACRO(...);
    }

where the macro might be null on some platforms.  Because projects
often use -Wall -Werror, I'd worry about introducing a warning without
more information about the effect.

Reply via email to