A complete declaration of the structure or union shall be included within any translation unit that refers to that structure. See section 6.1.2.5
of ISO 9899:1990 [2] for a full description of incomplete types.
Noncompliant code example
struct tnode * pt; // tnode is incomplete
Compliant solution
struct tnode * pt; // tnode is incomplete at this point
struct tnode
{
int count;
struct tnode * left;
struct tnode * right;
}; // type tnode is now complete