如何在我的项目中使用一些C ++文件而不将每个文件编译为C ++?

我有一个带有基本视图控制器类的项目,它由大约25个其他视图控制器inheritance。 现在我需要在该基类中使用一些核心音频,因此我正在集成一个使用C ++的Audio类(改编自Apple的aurioTouch示例项目)。 基类导入Audio类的头,然后初始化一个Audio对象,以便我可以调用Audio类中的方法。

当我编译时,我在Audio类及其辅助类中得到“expected’=’,’,’,’;’,’asm’或’ attribute ‘之前的’!=’token”之类的错误,因为编译器正在跳闸通过C ++语法。 如果我将基类的扩展名更改为.mm,我会得到相同的错误; 我想我还必须改变从基类inheritance的所有类的扩展。

有没有办法避免这种情况? 换句话说,如何只编译最少量的文件作为C ++ – 理想情况下只是Audio类,Audio类和基类 – 而不更改项目的其余部分?

我问的原因是这一点音频大约是应用程序function的0.5%,并且改变几十个文件进行不同编译似乎是错误的,因为这只是一个小小的补充。

实际上应该将使用C ++function的.m文件重命名为.mm 。 您必须确保在类的头文件中不包含任何C ++标头,否则其他非C ++类将会尝试包含您的类的头文件。