我有一个使用#define定义的字符串文字:
#define B "1234\0"
Run Code Online (Sandbox Code Playgroud)
如何在编译时使用此定义来获取此宽字符串文字?:
L"1234\0"
Run Code Online (Sandbox Code Playgroud)
(只是#define带有L前缀的d字符串文字,使其成为一个宽字符串).
我试过这个:
#define MAKEWIDE(s) L##s
Run Code Online (Sandbox Code Playgroud)
但这会产生LB.
令牌粘贴需要额外的间接级别才能正确处理用作操作数的宏.尝试类似的东西:
#define PASTE(x, y) x##y
#define MAKEWIDE(x) PASTE(L,x)
Run Code Online (Sandbox Code Playgroud)
这将工作得很好:
#define B "1234\0"
#define LB L"" B
Run Code Online (Sandbox Code Playgroud)