2014-09-30 46 views
-1

我知道'extern'意味着它的聲明和定義在相同的源文件中不可用。但是,我沒有看到它的任何重要用途。什麼是外部?

讓我們假設我有三個班員工,部門和圖書館。

可以說,我們有這樣的事情在圖書館類

extern NSString *abc; 

我們使用它像這樣在Department類。

Department.h

NSString *abc; 

Department.m

abc = @"abcdefg"; 

和這樣的事情是僱員類。

Employee.m

NSString *abc = @"xyz"; 

當我們在類Employee和Department它們看起來就像普通變量的聲明和定義。

所以,我的問題是什麼是特殊的權力?

+0

http://nshipster.com/c-storage-classes/ – 2014-09-30 20:56:18

+0

extern是一個C功能。 Objective-C只是因爲ObjC試圖成爲C兼容的。所以是的,在純面向對象的ObjC代碼中,你不需要它。 – Will 2014-09-30 21:10:20

+0

@更正確地說,Objective-C是C的一個完整超集。它不是試圖與C兼容,它*是* C,加上更多。但是你是對的,一個設計正確的,真正的OO Objective-C代碼庫不會使用像'extern'這樣的全局變量的一些C概念。 – rmaddy 2014-09-30 22:13:45

回答

1

在這種情況下,extern告訴編譯器不要抱怨沒有定義變量的聲明。儘管如此,Xcode並不會抱怨這一點,因爲所有Objective-C全局變量都被祕密地聲明爲extern

你可以在技術上離開extern指令,但你也可以明確指出。對於看到它的程序員來說,這仍然意味着什麼。