2010-05-02 170 views
52

extern关键字是指什么意思?我看到,在一个函数声明的面前就像extern关键字是指什么意思?

extern void DoFoo ... 
+0

锯'extern',字符串用一个'@“”'便捷构造在相应的.m(实现)文件中定义。 – Prairiedogg 2010-05-10 09:30:51

+1

发现此链接非常有用 - http://en.wikipedia.org/wiki/External_variable – itsaboutcode 2012-03-26 14:49:05

+0

可能的重复:[有关在Objective-C项目中使用的extern的3个问题](http://stackoverflow.com/q/7330048/ 45249) – mouviciel 2013-10-31 06:34:25

回答

39

extern给出名称外部联动。这意味着该对象或函数可以通过程序中其他翻译单元的名称访问。对于函数,这是任何情况下的默认链接,所以它的用法(在这种情况下)通常是多余的。

39

extern关键字声明一个变量或函数,并指定具有外部链接(它的名字是从不同于它的定义的其他文件可见) 。当修改变量时,extern指定该变量具有静态持续时间(当程序开始时分配,当程序结束时释放)。变量或函数可以在另一个源文件中定义,或稍后在同一个文件中定义。默认情况下,文件范围内变量和函数的声明是外部的。

你可以找到一个more complete description here

2

对于初学者来说,

起初我很困惑地发现,“extern关键字声明一个变量或函数,并指定具有外部链接”由@Romain Hippeau。

现在我明白了,我们将能够通过extern关键字与其他类共享我们的变量。

例如: Notification.h

enter image description here

Notification.m

enter image description here

没有extern关键字通知常数将创建下面的错误。在目标C h文件声明的指针`NSString` enter image description here