【发布时间】:2012-01-25 16:04:45
【问题描述】:
默认情况下,当您请求新的 ObjC 类时,Xcode 会同时创建一个 .h 和一个 .m 文件。 一切正常,直到您需要引用项目中其他地方的任何 C++ 文件并开始 #import 将其放入您的 .h 或 .m 文件中
此时,ObjC 编译器完全混乱并抛出大量解析错误,而您用户(即我)会更加困惑,直到它击中我:当然我应该制作那个文件一个 ObjC++ 文件。
选项有:
- 告诉 Xcode 这个特定的文件,即使它是一个 .m 文件 确实是一个 ObjC++ 文件,或者
- 将该文件重命名为 .mm。
第一个选项对我来说不是很可口,因为无论项目认为它是什么,该文件确实是 ObjC++。
第二个选项也不好,因为它搞砸了 Git 存储库,然后“忘记”曾经有另一个 .m 文件,它确实是这个“新”.mm 文件的历史。
所以我决定从现在开始总是将 Xcode 为我创建的任何 .m 文件在创建后首先重命名为 .mm,这样我就不会丢失历史记录。
到目前为止,它对我来说效果很好,但我有点担心,在某些极端情况下,我可能真的想要一个 ObjC 文件而不是 ObjC++ 文件。
那些极端情况会是什么?任何人都知道任何碰巧不包含任何 C++ 引用但会以某种方式阻塞 ObjC 编译器的 ObjC++ 文件,仅仅是因为它是一个 .mm 文件?
如果没有缺点,为什么不永远弃用 .m 并坚持使用 .mm 呢?
【问题讨论】:
标签: objective-c xcode4 objective-c++