不完全な型
不完全な型とは、識別子を記述する型でありながら、識別子のサイズを決定するために必要な情報が欠けている型です。 "不完全な型" には次のようなものがあります。
メンバーがまだ指定されていない構造体型。
メンバーがまだ指定されていない共用体型。
次元がまだ指定されていない配列型。
void 型は、完全にすることのできない不完全な型です。 不完全な型を完全にするには、欠けている情報を指定します。 次の例では、不完全な型を作成する方法と完全にする方法について説明します。
不完全な構造体型を作成するには、メンバーを指定しないで構造体型を宣言します。 この例では、ps ポインターは student という不完全な構造体型を指しています。
struct student *ps;
不完全な構造体型を完全にするには、後で同じスコープ内で、メンバーを指定して同じ構造体型を宣言します。
struct student { int num; } /* student structure now completed */
不完全な配列型を作成するには、繰り返し回数を指定しないで配列型を宣言します。 次に例を示します。
char a[]; /* a has incomplete type */
不完全な配列型を完全にするには、後で同じスコープ内で、繰り返し回数を指定して同じ名前を宣言します。
char a[25]; /* a now has complete type */