在iPhone项目中包含C ++代码时出现编译器错误

时间:2009-10-25 22:56:41

标签: c++ iphone cocoa-touch

我正在尝试将一些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

任何人都知道为什么我会收到此错误?

3 个答案:

答案 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吗?

如果编译器不知道EKTypeP_UINT_32,我认为你会收到类似的错误。