令牌粘贴

令牌粘贴允许将两个宏参数粘合在一起。例如,front##back 产生 frontback。一个着名的例子是 Win32 的 <TCHAR.H> 标题。在标准 C 中,可以编写 L"string" 来声明一个宽字符串。但是,Windows API 只允许通过 #defineing UNICODE 在宽字符串和窄字符串之间进行转换。为了实现字符串文字,TCHAR.H 使用它

#ifdef UNICODE
#define TEXT(x) L##x
#endif

每当用户写入 TEXT("hello, world") 并定义 UNICODE 时,C 预处理器将 L 和宏参数连接起来。与 hello, world 连接的 L 给出了 L"hello, world"