This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: if() and trailing ;
- From: Joe Buck <Joe dot Buck at synopsys dot COM>
- To: Simon Boulet <simon at nostalgeek dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Sat, 29 Jul 2006 21:32:55 -0700
- Subject: Re: if() and trailing ;
- References: <5A1EA79B-D8B0-4076-8E22-7F81BAA5685C@nostalgeek.com>
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.