Incomplete types are the type void, an array of unknown size, or structure, union, or enumeration tags that have no member lists. For example, the following are incomplete types:
void *incomplete_ptr; struct dimension linear; /* no previous definition of dimension */
void is an incomplete type that cannot be completed. Incomplete structure or union and enumeration tags must be completed before being used to declare an object, although you can define a pointer to an incomplete structure or union.
void Type
Array Type
struct (Structures)
Type
union (Unions) Type