宏#define STR16(x) L ## x
在应用于字符串文字时起作用:
STR16("Hello") // fine, this is translated to L"Hello"
但不是变量:
STR16(x) // fails, this is translated to Lx, and the variable Lx doesn't exist
在line 200 of this useful library中,有一个错误:
Parameter* param = new RangeParameter( STR16(p->GetNameForHost()), ...
将被翻译为
Parameter* param = new RangeParameter( Lp->GetNameForHost(), ...
失败,因为Lp
是未声明的标识符。
如何将L
添加到字符串文字到字符串变量const char *
?