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.