我正在尝试将一些C ++代码包含到我的iPhone项目中,并且我收到以下编译器错误:
“错误:'<'之前的预期初始化程序标记“
在此代码构造中:
template<typename T, P_UINT_32 BEG, bool OQ, bool OVR, bool DBG>
P_UINT_32 EKType<T, BEG, OQ, OVR, DBG>::getSizeX() const {
return n;
}
看起来XCode编译器没有将其识别为有效的C ++语法。我用.h和.mm命名了我的C ++文件,并将文件类型设置为sourcecode.cpp.h和sourcecode.cpp.cpp
任何人都知道为什么我会收到此错误?
答案 0 :(得分:1)
您可能在.M文件某处中包含了标题。令人惊讶的是这些东西是如何被吸引进来的,所以确保你的.M文件的全部被重命名.MM。
答案 1 :(得分:1)
如果文件同时包含Objective-C和C ++,则只需要命名文件.mm。
如果文件只包含C ++,则其扩展名应为.cpp
如果文件是ObjC和C ++的混合,则它应该具有扩展名.mm并且其类型设置为sourcecode.cpp.objcpp
答案 2 :(得分:0)
您确定要编译的源文件包含EKType
类(或结构)的声明和声明P_UINT_32
吗?
如果编译器不知道EKType
或P_UINT_32
,我认为你会收到类似的错误。