これがエラーになる(C89以降の)コンパイラは見たことないし、仕様を満たしていない。
typedef struct hoge hoge;
typedef struct hoge {
int hoge;
} hoge;