web-dev-qa-db-ja.com

externキーワードはどういう意味ですか?

externキーワードの意味は何ですか?私は次のような関数宣言の前でそれを見てきました

extern void DoFoo ...
56

externは名前を指定します外部リンケージ。これは、プログラム内の他の翻訳単位からこの名前でオブジェクトまたは関数にアクセスできることを意味します。関数の場合、これはいずれの場合でもデフォルトのリンケージであるため、通常、この使用法は冗長です。

41
CB Bailey

Externキーワードは、変数または関数を宣言し、外部リンケージがあることを指定します(その名前は、定義されているファイル以外のファイルから見ることができます)。変数を変更するとき、externは変数に静的な期間があることを指定します(プログラムの開始時に割り当てられ、プログラムの終了時に割り当て解除されます)。変数または関数は、別のソースファイルで定義することも、同じファイルで後で定義することもできます。ファイルスコープでの変数と関数の宣言は、デフォルトでは外部です。

詳細な説明はこちら にあります。

41
Romain Hippeau

初心者向け、

最初に、@ Romain Hippeauによる「externキーワードが変数または関数を宣言し、外部リンケージがあることを指定する」ということを知って混乱しました。

これで、externキーワードを使用して変数を他のクラスと共有できるようになることを理解しました。

例:Notification.h

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

Notification.m

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

私の他のクラスのいずれかにnotification.hをインポートすることで、文字列NotificationConstantの値を読み取ることができます。

Externキーワードがない場合、通知定数は次のエラーを作成します。 enter image description here

3
Sujananth