C++ で以下のようなコードを書くと

typedef struct {
int i;
} foo;

typedef struct {
foo foo;
} bar;

gcc 3.3.5 でコンパイルしたときに下記のようなエラーが出てしまいます。

error: declaration of `foo <無名 struct>::foo'
error: changes meaning of `foo' from `typedef struct foo foo'

定義を変えずにこれを回避するにはどうすればよいのでしょうか?
(上記の定義は C のコードとして書かれたもので、私が書き換えることはできません)

書き換えることができるなら bar の定義を次のようにすれば良いのですが...

typedef struct {
foo foo_;
} bar;