ということは、ヘッダで、途中でいきなり
void func(Foo *f);
という関数宣言がでてきても、Cコンパイラから
未知の型:Foo
とかおこられないで、大丈夫なの?

C++なら
struct Foo;
void func(Foo *f);
とFooについて宣言する必要があるけど…