This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug preprocessor/29836] Concatenation operator ## doesn't work with this: / ## /
- From: "neil at daikokuya dot co dot uk" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Nov 2006 22:49:24 -0000
- Subject: [Bug preprocessor/29836] Concatenation operator ## doesn't work with this: / ## /
- References: <bug-29836-13567@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #1 from neil at daikokuya dot co dot uk 2006-11-14 22:49 -------
Subject: Re: New: Concatenation operator ## doesn't work with this: / ## /
michael dot bishop at gdcanada dot com wrote:-
> I am trying to use the macro concatenation operator to make a "conditional
> comment". I want a symbol that I can sprinkle throught my C code that will be
> replaced either be a C++ style // comment, or it will be replaced with nothing.
There is no such thing as a conditional comment. Only Microsoft's
preprocessor, broken in many ways, seems to support this (and those
compilers that attempt to emulate MS). This has been discussed before;
GCC will never support this.
> The compiler error messages are:
>
> t.c:8:1: pasting "/" and "/" does not give a valid preprocessing token
> t.c:10:1: pasting "/" and "/" does not give a valid preprocessing token
This is correct.
> The output from the preprocessor (using the -E command line switch) is:
>
> int
> main ( void )
> {
> int i ;
> / / int j ;
>
> / / j = i ;
>
> return ( 0 ) ;
> }
>
> I find it strange that the preprocessor puts a blank space between the two '/'
> characters. This looks like a bug to me. I don't think there should be a
> blank space between the characters.
It's because the preprocessor is taking care to avoid creating something
that looks like a comment, from two separate tokens.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29836