|
|
Certain declarations can use incomplete types, but others require (complete) object types. Those declarations that require object types are array elements, members of structures or unions, and objects local to a function. All other declarations permit incomplete types. In particular, the following are permitted:
Note that since array and function parameter types
are rewritten to be pointer types,
a seemingly incomplete array parameter type is not
actually incomplete.
The typical declaration of main's argv
(namely, char argv[])
as an
unspecified length array of character pointers,
is rewritten to be a pointer to character pointers.