extern struct
extern struct
extern struct는 타겟 플랫폼의 C ABI와 정확히 일치하는 메모리 레이아웃(memory layout)을 갖는 구조체예요. 다시 말해, C 코드와 메모리 배치(바이트 단위)까지 그대로 맞춰야 하는 상황에서 쓰인다는 뜻이죠.
본문
extern struct는 타겟에 대한 C ABI와 일치하는 in-memory layout을 가져요. 즉 메모리 위에 구조체가 어떻게 놓이는지가 C 컴파일러가 정한 규칙(정렬·패딩 등)을 그대로 따르도록 보장해 줍니다.
만약 in-memory layout이 정확히 정해질 필요가 없다면, struct가 더 좋은 선택이에요. struct는 컴파일러에 훨씬 더 적은 제약을 두기 때문에, 레이아웃을 자유롭게 최적화할 여지를 줍니다. 정말로 C와 메모리 배치를 공유해야 하는 경우가 아니라면 굳이 extern까지 쓸 필요는 없다는 뜻이에요.
backing integer의 ABI를 갖는 구조체가 필요하다면 packed struct를 참고하세요. 플래그(flag)를 모델링할 때 유용한 경우가 많습니다.