Sun Studio 12:C 用户指南

6.5.6 标记粘贴

在 K&R C 中,将两个标记组合在一起至少有两种方法。以下代码中的两个调用均使用 x1 两个标记生成单个标识符 x1


#define self(a) a
#define glue(a,b) a/**/b ?
self(x)1
glue(x,1)

同样,ISO C 不认可这两种方法。在 ISO C 中,以上两个调用均生成两个独立标记 x1。可以通过使用 ## 宏替换操作符针对 ISO C 重新编写以上第二种方法:


#define glue(a,b) a ## b
glue(x, 1)

只有在定义了 __STDC__ 时,才应将 # 和 ## 用作宏替换操作符。由于 ## 是实际操作符,因此对于定义和调用中的空白,调用更加自由。

没有什么直接方式可用来实现两种旧式粘贴方案中第一种方案,但是由于它在调用时引入了粘贴的任务,因此使用它的频率比使用其他形式要低。