C99 usage in gcc

Zack Weinberg zack@codesourcery.com
Mon Feb 2 23:40:00 GMT 2004


Joe Buck <Joe.Buck@synopsys.COM> writes:

> On Sat, Jan 31, 2004 at 10:16:59AM -0800, Zack Weinberg wrote:
>> Bruce Stephens <bruce@cenderis.demon.co.uk> writes:
>> 
>> >> It is a pedwarn, hence you need -pedantic also.
>> >
>> > Which is useful, except that it also complains about:
>> >
>> > #ifdef __cplusplus
>> > // foo
>> > #endif
>> 
>> As it should.  This will be misinterpreted by a plain-C89 compiler;
>> comment stripping happens before #ifdef processing.
>
> I disagree.  There should be no warning, because the plain-C89 compiler
> will *not* misinterpret this file.  True, the // will not be interpreted
> as a comment; since there is no token "//" in C89 it will be interpreted
> as two / tokens.  Nevertheless, the token stream with the two / tokens is
> ifdef'ed out, so it's a don't care.

That is true, however, there are other constructs that *will* be
misinterpreted: for example,

#ifdef __cplusplus
// can't happen
#endif

It is too hard to tell the difference at the point where the warning
issues.

zw



More information about the Gcc mailing list