仮定義

C のみ

暫定定義 とは、ストレージ・クラス指定子と初期 化指定子を持たない外部データ宣言です。変換単位の終りに達しても、その ID に対して初期化指定子が指定された定義が現 れなかった場合、暫定定義は完全定義になります。 この場合、コンパイラーは、定義済みオブジェクトに未初期化スペースを予約します。

以下のステートメントは、通常の定義と暫定定義を示しています。

int i1 = 10;         /* definition, external linkage */
static int i2 = 20;  /* definition, internal linkage */
extern int i3 = 30;  /* definition, external linkage */
int i4;              /* tentative definition, external linkage */
static int i5;       /* tentative definition, internal linkage */

int i1;              /* valid tentative definition */
int i2;              /* not legal, linkage disagreement with previous */
int i3;              /* valid tentative definition */
int i4;              /* valid tentative definition */
int i5;              /* not legal, linkage disagreement with previous */
C のみ の終り
C++ のみ。

C++ は、暫 定定義の概念をサポートしていません。ストレージ・クラス指定子のない外部データ宣 言は常に定義です。

C++ のみ。 の終り


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]