私はMacOS用のアプリを開発しています。これには、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で合法ですか?