https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120978

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Halalaluyafail3 from comment #4)
> They are only considered operators during macro expansion. The standard
> provides the following example:
> 
> > #define hash_hash # ## #
> > #define mkstr(a) # a
> > #define in_between(a) mkstr(a)
> > #define join(c, d) in_between(c hash_hash d)
> > char p[] = join(x, y); // equivalent to
> > // char p[] = "x ## y";
> Which demonstrates that a ## token can be used (in this case stringized)
> without causing it to be treated as an operator.

Though if 3 of the major compilers all agree and only one disagrees maybe this
should be brought up to the committee as a defect requesting a clearification.

Reply via email to