where struct foo is an incomplete struct type would be safer. This
would allow the compiler to catch mismatches between the function
parameter and the given arg (realize that void * == void ** == void ***
and so on in C). Note, I did this for some typedefs in our libgss and
we flushed out several bugs. Just a thought.