struct A { . . . }; struct B { struct A xdata *structA; . . . }; void test(struct B xdata *structB) { struct A xdata *structA = structB->structA; } structA is a pointer to xdata. structB->structA becomes a generic pointer which i think is wrong. Does anyone know why?