Oracle Solaris Studio 12.2: C ユーザーガイド

6.11.5 正当性

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


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

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