C ユーザーズガイド

正当性

なぜ不完全な型が必要なのでしょうか。void を除いて、C では他の方法で扱えない不完全な型の唯一の機能は、構造体と共用体の前方参照です。たとえば、2 つの構造体がお互いを指すポインタを必要とする場合、これを実現するためには、不完全な型を使用しなければなりません。


struct a { struct b *bp; };
struct b { struct a *ap; };

異なる形式のポインタや異なる種類のデータ型を持つ、強力な型依存プログラミング言語には、すべて上記のようなケースを処理するための方法が用意されています。