형식의 이름은 선언이 완성된 직후가 아니라 발견된 직후에 사용할 수 있게 된다. struct Link { Link∗ previous; Link∗ successor; }; 그러나 선언이 완성될 때까지 구조체는 새 객체를 선언할 수 없다. struct No_good { No_good member; // error : recursive definition }; 컴파일러가 No_good의 크기를 결정할 수 없기 때문에 이것은 오류다. 두 개(혹은 그 이상)의 구조체가 서로 참조할 수 있도록 하려면 이름을 구조체의 이름으로 선언할 수 없다. struct List; // struct name declaration: List to be defined later struct Link { Link∗ pre; Link∗ ..