Do all your header files have guards around them? By guard, I mean something like:
Code:
#ifndef SOMEFILE_H
#define SOMEFILE_H

// all the usual header file stuff should go in here
// between the #define and the #endif 

#endif
This prevents most of the usual circular definition issues. Every single one of the header files you work with should have them (as a just-in-case).