L
In der Regel werden bei solch zyklischen Abhängigkeiten Deklarationen verwendet, um dem Compiler mitzuteilen, dass es einen bestimmten Typ gibt, aber nicht, was dieser enthält. Deklarationen (in diesem Zusammenhang auch Vorausdeklarationen genannt) sind überall dort ausreichend, wo der Compiler den Inhalt eines Typs nicht kennen muss.
Beispiel:
#ifndef MANAGER_H_
#define MANAGER_H_
// hier stehen die Innereien von QATuple drin. Die brauchen wir hier aber noch nicht.
// #include "uestion.h"
// getNewQATupel wird ein Zeiger übergeben. Dem Compiler reicht es, zu wissen, dass QATuple ein Typedef einer Struktur ist.
typedef struct questionAnswersTuple QATuple;
int getNewQATupel(int p1, QATuple *qa);
#endif
Erst in der Implementierung von getNewQATupel muss die Struktur (vermutlich) bekannt sein. Deshalb musst Du in manager.c sowohl manager.h als auch uestion.h einbinden.
BTW: Meiner Meinung nach ist das include manager.h in uestion.h völlig unnötig.