Cスレで質問していたのですが、こちらにも流れてきました…
http://pc2.2ch.net/test/read.cgi/tech/1048995232/151-

C++なら、構造体の宣言は
struct Foo;
ですむので、関数の宣言でも
struct Foo;
void func(Foo *f);
というぐあいに、(実体を書かずに)宣言だけですませることができます。
これでコンパイル依存が減って作業がはかどります。

これをCでやるにはどうすればいいのでしょうか?
typedef strct { /* ... */ } Foo;
といったぐあいに他のヘッダでFooを定義しているときに
他のヘッダで
extern typedef Foo;
void func(Foo *f);
とできるのでしょうか?

タグ名を使って
extern struct Foo_tag;
void func(struct Foo_tag *f);
と冗長(?)にするの?なんかやだなぁ