【发布时间】:2014-12-05 12:10:18
【问题描述】:
可能重复:
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。
【问题讨论】:
-
另请注意,您通常不需要将
'\0'字符放在文字字符串的末尾 - 编译器会为您完成。我唯一能想到的时候你需要自己做的是,如果你真的需要在你的字符串末尾有两个空字符,或者你需要确保用文字初始化的字符数组得到空终止字符 - 在C,大小合适的 char 数组不会得到空字符。自己显式地添加它会鼓励编译器至少生成一个警告。这两种用途都很少有用。 -
我预计有人会提到\0。我不对字符串文字负责,也不清楚它为什么存在。
标签: c c-preprocessor