【发布时间】:2016-09-27 13:40:02
【问题描述】:
使用 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 字符(是否存在?)但没有...
【问题讨论】:
-
STR16 是宏吗?你能提供它的代码吗?
-
我希望
STR16是宏,它需要一个字符串文字作为参数,例如#define STR16(s) L##s或类似的。 -
@PaulR 真的!如果您将其发布为答案,我会接受。
-
在回答此问题之前,您需要出示您的minimal reproducible example。
-
@Basj:当然 - 评论现在转换为答案。