我正在为 Mac OS 开发一个应用程序,其中包括 C++ 中的跨平台库。有一个宏定义如下:
#define MY_GET(DataType,DataName,PtrFunName,DefaultVaule) \
DataType Get##DataName() \
{ \
DataType dataTem = (DefaultVaule);\
if (NULL == p) \
{ \
return dataTem; \
} \
p->Get##PtrFunName(CComBSTR(L#DataName),&dataTem); \
return dataTem; \
}
编译时,编译器会产生以下错误:
Use of undeclared identifier 'L'
它是从宏“MY_GET”扩展而来的。搜索后CComBSTR(L
,我可以找到 L"String" 的其他用法。那么为什么L
我的宏的扩展是未定义的,而其他L
的却是成功编译的。
L"String" 在 Objective-C 中合法吗?