This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: C99 usage in gcc
- From: "Zack Weinberg" <zack at codesourcery dot com>
- To: Joe Buck <Joe dot Buck at synopsys dot COM>
- Cc: Bruce Stephens <bruce at cenderis dot demon dot co dot uk>, GCC List <gcc at gcc dot gnu dot org>
- Date: Mon, 02 Feb 2004 15:40:10 -0800
- Subject: Re: C99 usage in gcc
- References: <877jzal3rz.fsf@wasabisystems.com><C02436AE-52C3-11D8-9D26-000393A6D2F2@physics.uc.edu><16410.14766.949435.377839@cuddles.cambridge.redhat.com><Pine.LNX.4.58.0401301433440.3429@wotan.suse.de><87wu79zcos.fsf@cenderis.demon.co.uk><873c9wt23o.fsf@codesourcery.com> <20040202153402.C7898@synopsys.com>
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