struct stardate 선언문의 가시 범위(visibility)는 struct person과 같다. 가장 바깥쪽의 struct 선언문(즉, person)의 {} 안에 중첩해서 정의한 struct(즉, stardate)에 대해서는 스코프가 새로 정의되지 않는다. 이는 C++를 비롯한 다른 프로그래밍 언어와 다른 점이다.
TAKEAWAY 6.28 중첩된 선언문에 나오는 struct는 모두 스코프가 같다.
다시 말해 앞에서 중첩해서 선언했던 struct의 스코프가 전역 범위라면 두 struct 모두 C 파일 전체에서 볼 수 있다. 두 struct가 함수 안에 선언됐다면 스코프는 그 함수의 {} 블록 안으로 제한된다.
따라서 다음과 같이 정의하는 것이 좀 더 적절하다.
struct stardate { struct tm date; struct timespec precision; }; struct person { char name[256]; struct stardate bdate; };
이렇게 하면 모든 struct를 동급으로 만들 수 있다.