typedef-ing anonymous struct is a practice that pre-dates C++03 and is mainly oriented to retain compatibility with pre-C99 compilers.
Given that this is 2011, and that both C++ and C are changed, I wonder why there is no more up-to-date version of such a library!
If it is not in development anymore, you cannot "leave", but just "survive" and change it is the way to do that.
If still in deployment, submit the issue to the development team.
If you need a workaround, consider that struct can inherit.
So, write a forward declaration like
struct MyFoo;
and define it as
#include "old_library.h"
struct MyFoo: public Foo {};
And in all your code, forget about Foo
and always use MyFoo
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…