c - 如何将#defined 字符串文字转换为宽字符串文字?

标签 c c-preprocessor

<分区>

Possible Duplicate:
How to convert concatenated strings to wide-char with the C preprocessor?

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

#define B "1234\0"

我如何使用这个定义在编译时得到这个宽字符串文字?:

L"1234\0"

(只是 #defined 字符串文字加上 L 前缀,使其成为一个宽字符串)。

我试过这个:

#define MAKEWIDE(s) L##s

但这会生成 LB

最佳答案

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

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

关于c - 如何将#defined 字符串文字转换为宽字符串文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603275/

相关文章:

将内联函数转换为宏

c++ - 为什么我的光标在最后一行无限循环

c - 条件变量有队列吗?

c++ - 如何更改宏函数参数扩展顺序?

macros - "macro annotations embedding in comments"在mcpp中是什么意思?

c++ - 通过来自不同模块的预处理器/模板生成列表/集合,并且必须在链接之前填写

编译C代码并暴露给Linux下的Swift

c - 为什么当我传递 "big"大小时 calloc 总是返回 NULL?

c - 在 c 中使用三元运算符的错误

c++ - 如何从 VC 2005 (C++) 中的命令行创建字符串预处理器定义?