> But it is common to have an empty action on a condition. You'll often
> see code like
if (condition)
/* nothing */;
Yes, the intent of the warning is catch people who stick a ; at the end
of a line (out of habit) when there should not be one.
That is what the warning should target, not good code like the above.
gcc should suppress the warning when the ';' is on a different line
than the `if'. I do that (and other filtering) in a similar warning
for `for' and `while' with good results.
If the pre-processor would mark comment and macro boundaries,
then we could do better. E.g. these should not trigger the warning:
if (condition) /* nothing */;
if (condition) SPEW();
And we could easily detect the problem with
if(...)
SOME_MACRO(with complex arguments)
do_something();
since we could determine that the control is spanning a null macro.
Tom Truscott