extern关键字是什么意思?

时间:2010-05-02 15:37:38

标签: c objective-c extern

extern关键字是什么意思?我在像

之类的函数声明面前看到过
extern void DoFoo ...

3 个答案:

答案 0 :(得分:41)

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

您可以找到more complete description here

答案 1 :(得分:41)

extern提供了一个名称​​外部链接。这意味着可以通过程序中其他翻译单元的名称访问对象或函数。对于函数,这是任何情况下的默认链接,因此它的用法(在此上下文中)通常是多余的。

答案 2 :(得分:3)

初学者,

最初,我很困惑地了解到," extern关键字声明了一个变量或函数,并指定它具有外部链接"来自@Romain Hippeau。

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

例如: Notification.h

 #import <Foundation/Foundation.h>
 extern const NSString* notificationConstant;

Notification.m

 #import "Notification.h"
 const NSString* notificationConstant = @"NotificationConstant";

通过在任何其他类中导入notification.h,我可以读取字符串NotificationConstant的值。

没有extern关键字For Notification常量会产生以下错误。 enter image description here