令牌粘贴
令牌粘贴允许将两个宏参数粘合在一起。例如,front##back
产生 frontback
。一个着名的例子是 Win32 的 <TCHAR.H>
标题。在标准 C 中,可以编写 L"string"
来声明一个宽字符串。但是,Windows API 只允许通过 #define
ing UNICODE
在宽字符串和窄字符串之间进行转换。为了实现字符串文字,TCHAR.H
使用它
#ifdef UNICODE
#define TEXT(x) L##x
#endif
每当用户写入 TEXT("hello, world")
并定义 UNICODE 时,C 预处理器将 L
和宏参数连接起来。与 hello, world
连接的 L
给出了 L"hello, world"
。