2010-12-20 60 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