使用Visual Studio Express 2013编译项目时,出现此错误
.... \ WDL \ IPlug \ IPlugVST3.cpp(199):错误C2065:'Lp':未声明的标识符[D:\ wdl-ol \ IPlugExamples \ MyFirstPlugin \ MyFirstPlugin-vst3.vcxproj]
奇怪的是文件IPlugVST3.cpp
不包含Lp
,只包含p
:
switch (p->Type())
{
case IParam::kTypeDouble:
case IParam::kTypeInt:
{
Parameter* param = new RangeParameter( STR16(p->GetNameForHost()), // <---- this line
i,
STR16(p->GetLabelForHost()),
p->GetMin(),
p->GetMax(),
p->GetDefault(),
0, // continuous
flags,
unitID);
param->setPrecision (p->GetPrecision());
parameters.addParameter(param);
为什么C ++编译器将其理解为Lp
而不是p
?
注意:我检查了是否没有隐藏的unicode字符(这是否存在?)但是没有......
答案 0 :(得分:1)
STR16
很可能是一个宏,它希望将字符串文字作为参数,例如:
#define STR16(s) L##s
或类似的东西。它传递一个变量而不是一个字符串文字然后你会得到类似你正在观察的问题。