如何将#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