This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
preprocessor/2264: Macro expansion failure with ## pre-processor operator
- To: gcc-gnats at gcc dot gnu dot org
- Subject: preprocessor/2264: Macro expansion failure with ## pre-processor operator
- From: mm7323 at bris dot ac dot uk
- Date: 11 Mar 2001 20:01:02 -0000
- Reply-To: mm7323 at bris dot ac dot uk
>Number: 2264
>Category: preprocessor
>Synopsis: Macro expansion failure with ## pre-processor operator
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Mar 11 12:06:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: Redhat 7.0
>Release: 2.96
>Organization:
>Environment:
Linux x86. Redhat 7.0
>Description:
#define BAR bar
#define FOO(a) a ## BAR
FOO(foo)
Would expect to get 'foobar' but get 'fooBAR' instead.
If we omit the ## operator, we get 'foo bar', which is inconsistent behavior IMHO.
See attachment for example and preprocessor output.
>How-To-Repeat:
See attachment.
>Fix:
Would expect example to give 'foobar'.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="typescript"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="typescript"
U2NyaXB0IHN0YXJ0ZWQgb24gU3VuIE1hciAxMSAxOTo0ODo1MiAyMDAxChtdMDttbTczMjNAbWlr
ZTogL2hvbWUvbW03MzIzL2J1ZwdbbW03MzIzQG1pa2UgYnVnXSQgY2F0IGJ1Zy5oIA0KDQovKiBU
ZXN0IDEgKi8NCiNkZWZpbmUgQkFSICAgYmFyDQojZGVmaW5lIEZPTyhhKSBhICMjIEJBUg0KDQov
KiBFeHBlY3QgdG8gYmUgJ2Zvb2JhcicgKi8NCkZPTyhmb28pIA0KDQoNCg0KLyogVGVzdCAyICov
DQojZGVmaW5lIENCUyAgY2JzDQojZGVmaW5lIEdQUChiKSBiIENCUw0KDQovKiBFeHBlY3QgdG8g
YmUgJ2dwcCBjYnMnICovDQpHUFAoZ3BwKQ0KDQoNChtdMDttbTczMjNAbWlrZTogL2hvbWUvbW03
MzIzL2J1ZwdbbW03MzIzQG1pa2UgYnVnXSQgZ2NjIC1DIC1FIGJ1Zy5oIA0KIyAxICJidWcuaCIN
Cg0KLyogVGVzdCAxICovDQoNCg0KDQovKiBFeHBlY3QgdG8gYmUgJ2Zvb2JhcicgKi8NCmZvb0JB
Ug0KDQoNCg0KLyogVGVzdCAyICovDQoNCg0KDQovKiBFeHBlY3QgdG8gYmUgJ2dwcCBjYnMnICov
DQpncHAgY2JzDQobXTA7bW03MzIzQG1pa2U6IC9ob21lL21tNzMyMy9idWcHW21tNzMyM0BtaWtl
IGJ1Z10kIGdjYyAtLXZlcnNpb24NCjIuOTYNChtdMDttbTczMjNAbWlrZTogL2hvbWUvbW03MzIz
L2J1ZwdbbW03MzIzQG1pa2UgYnVnXSQgZXhpdA0KClNjcmlwdCBkb25lIG9uIFN1biBNYXIgMTEg
MTk6NDk6MDggMjAwMQo=