57

extern关键字是什么意思?我已经在函数声明之前看到了

extern void DoFoo ...
4

3 回答 3

41

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

您可以在此处找到更完整的说明

于 2010-05-02T15:38:59.113 回答
41

extern给出一个名字external links。这意味着对象或函数可以通过该名称从程序中的其他翻译单元访问。对于函数,这是任何情况下的默认链接,因此它的使用(在此上下文中)通常是多余的。

于 2010-05-02T15:41:41.860 回答
4

对新手而言,

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

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

例如:Notification.h

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

通知.m

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

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

没有 extern 关键字 For Notification 常量将产生以下错误。 在此处输入图像描述

于 2017-09-06T15:06:35.620 回答