和_T()
Visual Studio 中的宏一样,我定义并使用了自己的_L
宏:</p>
#define _L(x) __L(x)
#define __L(x) L ## x
它适用于:
wprintf(_L("abc\n"));
但得到一个编译错误:
wprintf(_L("abc\n""def\n"));
它报告“不能连接具有不同字符类型的字符串文字”。
我也做了:
#define _L2(x) __L2(x)
#define __L2(x) L ## #x
wprintf(_L2("abc\n""def\n"));
代码被编译,但\n
不能作为新行的转义序列。\n
变成两个字符,输出为wprintf
:
"abc\n""定义\n"
我怎样才能有一个宏来将两个连接的 char 字符串转换为wchar_t
?问题是我有一些已经存在的宏:</p>
#define BAR "The fist line\n" \
"The second line\n"
我想wchar
在编译期间将它们转换为字符串。编译器是windows中的ICC。
编辑:宏在 gcc
中_L
有效,MSVC 和 ICC 无效,这是一个编译器错误。谢谢@R..给我评论。