2010-12-20 111 views
3

我注意到一些Objective-C项目中一些使用大量C函数的文件,将代码存储在.c文件中而不是.m。我知道.m是针对Objective-C的,而.c是针对C的,但在使用.c时可以使用.m吗?是否有性能增加或并发症的好处? GCC或clang会在每个代码中编译相同的代码吗?.c文件而不是.m文件?

回答

6

主要好处是.c文件可以在正常的C程序中按原样使用,并且您知道它们不会意外地合并使它们不兼容的Objective-C构造。

+0

所以你会期望两个编译之间有很大的区别? – 2010-12-20 04:01:49

+1

@Justin Meiners:不,我不会。我从来没有注意到或听说编译为Objective-C或C99之间有很大的区别。 AFAIK,GCC和Clang中的Objective-C编译器以与普通C程序相同的方式编译Objective-C程序的纯C部分。请注意,对于Objective-C++来说,情况并非如此 - 针对该编译器的编译器有点不同,编译时间比单独使用Objective-C或C++的时间要长。 – Chuck 2010-12-20 04:59:33

2

是的,Xcode会用'C'编译器编译.c文件,用'Objective-C'编译器编译.m文件。这是相同的编译器二进制文件,只是使用不同的语言选项。既然如此,我不希望相对的表现会太差。

+0

所以你不会指望他们之间有太大的区别? – 2010-12-20 02:45:16

+0

我不希望有太大的区别。 – ldav1s 2010-12-20 23:01:13

0

除此之外,.c对跨平台开发非常有用。将它从一个平台移植到另一个平台的开销非常低或几乎可以忽略不计。 。大多数情况下,应用程序的后端或模型是使用“C”开发的,其中性能是必需的,您需要与机器直接交互。比如与硬件和东西的交互。

+0

我不问C代码,当我询问大部分项目是否为objective-c时,不会将C代码放在.m文件中。 – 2013-08-04 17:14:46