This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug preprocessor/29836] Concatenation operator ## doesn't work with this: / ## /



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]