Ok, this should be a fairly simple problem to solve but I'm obviously being thick !! How do I get the following code to compile ? typedef struct s1_tag { int a; s2 b; }s1; typedef struct s2_tag { int a; int b; }s2 ; typedef struct s3_tag { s1 a; s2 b; }s3; I know I have to provide forward refs, but I just can't work out how to do it with typedef'd structures.