K&R may say that the short form of the declaration may be only used
for subsequent occurrances of the tag but those of us who write code
which looks like:
struct a { struct b *pb;
....
};
struct b { struct a *pa;
....
};
would be very upset if the compiler enforced that restriction.