0

对不起我的英语不好。我正在尝试在我的 iOS 项目中使用纯 C++ 代码,但我遇到了下一个问题:

我创建一个新文件product.cpp + product.h,我创建了他自己的方法和属性,我想在我的viewcontroller.m中使用这个类但不运行,我将viewcontroller.m的扩展名更改为viewcontroller.mm但不要运行,但如果我将 appDelegate.m 的扩展名更改为 appDelegate.mm,则可以运行。

我的问题是,如果我想使用 .cpp,我总是必须将 mi 文件更改为 .mm?

:/

4

1 回答 1

0

通常是的,.mm 的文件扩展名告诉 Xcode 调用 Objective-C++ 编译器,而 .m 告诉编译器调用 Objective-C 编译器。您可以使用右侧的文件设置窗格在每个文件的基础上设置编译器类型(因此您可以强制对 .m 文件进行 Objective-C++ 编译),但这并不直观,并且可能会混淆未来的维护者.

如果您愿意考虑来自长期 C++ 和 Objective-C 用户的一些建议,我已经对两者进行了很多混合,随着时间的推移,它的麻烦多于它的价值。如果纯粹坚持使用 Objective-C,你会好得多,如果你有一些 C++ 库,你只需要集成,然后为它制作一个 C 包装器。

过去,Xcode 分析器仅适用于 Objective-C 文件,而不适用于 Objective-C++,因此通过编写 Objective-C++ 文件,您将失去该工具提供的很多价值。我不确定自从我上次编写任何 Objective-C++ 以来,Apple 是否在一年左右的时间里改变了它,但我想他们没有太多理由这样做。如果可以,请坚持使用 Objective-C,因为 Analyzer 非常有用。

于 2012-06-03T00:15:45.823 回答