仮定義

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++ は、仮定義の概念をサポートしていません。つまり、ストレージ・クラス指定子のな い外部データ宣言は常に 1 つの定義と見なされます。

関連参照

IBM Copyright 2003