如何将#defined string literal转换为宽字符串文字?

时间:2011-07-06 21:31:20

标签: c c-preprocessor

  

可能重复:
  How to convert concatenated strings to wide-char with the C preprocessor?

我有一个使用#define定义的字符串文字:

#define B "1234\0"

如何在编译时使用此定义来获取此宽字符串文字?:

L"1234\0"

(只有#define d字符串文字,前面加L使其成为一个宽字符串。)

我试过了:

#define MAKEWIDE(s) L##s

但这会生成LB

2 个答案:

答案 0 :(得分:7)

这样可以正常工作:

#define B "1234\0"
#define LB L"" B

答案 1 :(得分:6)

令牌粘贴需要额外的间接级别才能正确处理用作操作数的宏。尝试类似:

#define PASTE(x, y) x##y
#define MAKEWIDE(x) PASTE(L,x)