gcc4.5.0で実験

typedef struct tagHOGE HOGE;
typedef struct tagHOGE
{
 int fga;
 HOGE* next;
} HOGE:

再定義で怒られます。
じゃあ、

typedef struct tagHOGE HOGE;
struct tagHOGE
{
 int fga;
 HOGE* next;
}:

これは大丈夫。でも、

typedef struct tagHOGE HOGE;
typedef struct tagHOGE HOGE;
struct tagHOGE
{
 int fga;
 HOGE* next;
}:

これだとだめです。うーむ、include header内でstructへのポインタを持つこと多いんだけどなぁ。
ちなみに、Visual Studio 2005のcl.exeは全部通してくれちゃいました。ゆるいなぁ。