如何将#defined string literal转换为宽字符串文字?
可能重复:
如何使用C预处理器将连接字符串转换为wide-char?
我有一个使用#define定义的字符串文字:
#define B "1234\0"
如何在编译时使用此定义来获取此宽字符串文字?:
L"1234\0"
(只是带有L
的#define
d字符串文字,使其成为一个宽字符串)。
我试过这个:
#define MAKEWIDE(s) L##s
但这会产生LB
令牌粘贴需要额外的间接级别才能正确处理用作操作数的宏。 尝试以下方法:
#define PASTE(x, y) x##y #define MAKEWIDE(x) PASTE(L,x)
这将工作得很好:
#define B "1234\0" #define LB L"" B