Sun Studio 12:C 用户指南

6.11.5 正当理由

为什么不完全类型是必要的?在忽略 void 的情况下,只有一个由不完全类型提供的功能是 C 无法以其他方式处理的,而必须利用对结构和联合的正向引用。如果两个结构需要相互指向的指针,则唯一的方法是使用不完全类型:


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

具有某种形式的指针以及异构数据类型的所有强类型编程语言提供处理这种情形的某些方法。