XCode .m vs. .mm

时间:2010-12-30 11:35:51

标签: xcode

在zxing iphone项目中,自述文件指出:

  
      
  • 在尝试使用时构建自己的项目时可能会发生这种情况   ZXingWidgetController你得到链接器   像“未定义引用”这样的错误。   如果此错误看起来像c ++   未定义的引用,然后重命名   main.m到main.mm(Objective-C ++   源后缀)可以解决问题
  •   
确实如此。但我想知道为什么?

2 个答案:

答案 0 :(得分:64)

.mm扩展名代表Objective-C ++,当编译器可以处理C ++类时。 但是当使用.m扩展名时,它将只能编译C代码,而不需要C ++类。

答案 1 :(得分:0)

.m.mm都是基于Mac的应用程序的源代码的类文件扩展名。 .m文件可以同时包含 Objective-C Objective-C ++ 类。为了避免在混合使用场景中两者之间发生冲突,约定将所有 Objective-C ++ 类文件重命名为.mm。这有助于编译器进行区分。

因此,在同时使用 Objective-C Objective-C ++ 的项目中,您将看到:

    包含 Objective-C
  • .m个文件 包含 Objective-C ++
  • .mm个文件