(Question was: how to write a typedef for a recursive structure) I always structure my declarations like this: typedef struct rec record; /* Bunch of similar typedefs */ struct rec { record *p; /* Etc. */ }; /* Etc. */