MAC开发--.m文件修改为.mm之后引发的一系列问题及解决方法

由于公司的项目需要跨平台编译,所以免不了入了混编的坑,现归纳如下,希望可以给踩坑的后人留下一点福利吧。

1、苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++。有了它,你就可以在Objective-C应用程序中使用已有的C++类库。Xcode需要源文件以".mm"为扩展名,这样才能启动编译器的Objective-C++扩展。

2、在.mm文件对应的.h文件中,引用c++的类或者头文件,就会报找不到string.h等C++类库之类的错误:

需要在包含关于c++部分的头尾写上#ifdef __cplusplus,#endif,告诉编译器这部分是用C++预编译的。

3、枚举类型错误的问题:


枚举类型累加错误

文件改成.mm之后,枚举类型的累加就会报类型不匹配的错误。


枚举类型累加错误解决方法

这时,我们只需要用static_cast < type-id > ( expression ),进行类型的转换。

4、持续更新中。。。。

你可能感兴趣的:(MAC开发--.m文件修改为.mm之后引发的一系列问题及解决方法)