在Objective-C项目中,为什么要使用.c文件而不是.m文件?

3

我注意到在一些Objective-C项目中,一些使用大量C函数的文件会将代码存储在.c文件中而不是.m文件中。我知道.m文件用于Objective-C,.c文件用于C,但当您可以使用时,使用.c有何好处?是否有性能提升或复杂性优势?GCC或clang是否会在每个文件中编译等效代码时有所不同?

3个回答

6
主要的好处是,.c文件可以直接在普通的C程序中使用,您知道它们不会意外地包含Objective-C结构,从而使它们不兼容。

那么你会期望这两个编译之间有很大的差异吗? - Justin Meiners
1
@Justin Meiners:不会。我从未注意到或听说过使用Objective-C或C99编译之间有太大的区别。据我所知,无论是GCC还是Clang中的Objective-C编译器都以与编译纯C程序相同的方式编译Objective-C程序的纯C部分。请注意,对于Objective-C++来说情况并非如此——它的编译器略有不同,并且编译时间比仅使用Objective-C或C++更长。 - Chuck

2

是的,Xcode将使用'C'编译器编译.c文件,使用'Objective-C'编译器编译.m文件。它们使用的是同一编译器二进制文件,只是使用不同的语言选项。因此,我不会期望相对性能有太大差异。


那么你不会期望它们之间有太大的差异吧? - Justin Meiners
我不会期望有太大的差异。 - ldav1s

0
除了其他方面,.c 适用于跨平台开发。从一个平台移植到另一个平台的开销非常低或几乎可以忽略不计。大多数应用程序的后端或模型都是使用“C”开发的,需要性能并且需要与机器直接交互,例如与硬件等进行交互。

我不是在问C代码,而是在问当大部分项目是Objective-C时,不要将C代码放在.m文件中。 - Justin Meiners

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接