我需要将#define
参数字符串化为宽字符串。
所以,而
#define c(x) x,#x
用作:
{c(maria),0,false},
给出:
{maria,"maria",0,false} // maria is a member of an enum.
我不知道如何做同样的事情,但创建一个宽字符串。
我的意思是"maria"
L"maria"
答案 0 :(得分:3)
你可以这样做:
#define c(x) x,L###x
##
串联是将L
和带引号的字符串合并为一个预处理令牌所必需的(因为L
是字符串文字的一部分令牌)。
#define c(x) x,L###x
c(Hello)
通过预处理器(使用clang++ -E test.cpp
)粘贴它会产生:
Hello,L"Hello"
答案 1 :(得分:0)
你为什么不试试
#define c(x) x,L#x
编辑:显然,这只适用于Visual Studio。因此,您应该像其他人建议的那样使用L###x
。