누군가가 #pragma pack전 처리기 명령문이 무엇을하는지, 더 중요하게는 왜 그것을 사용하기를 원하는지 설명 할 수 있는지 궁금 했습니다. 나는 약간의 통찰력을 제공 하는 MSDN 페이지를 체크 아웃 했지만 경험이있는 사람들로부터 더 많은 것을 듣기를 희망했습니다. 더 이상 어디에서 찾을 수 없지만 코드에서 이전에 보았습니다.
C에서 컴파일러는 각 멤버가 올바르게 정렬되도록 멤버 사이 또는 마지막 멤버 뒤에 패딩 바이트를 삽입하여 선언 된 순서대로 구조체 멤버를 배치합니다. gcc는 언어 확장을 제공하는데 __attribute__((packed)), 이는 컴파일러에게 패딩을 삽입하지 않도록 지시하여 구조체 멤버가 잘못 정렬되도록합니다. 예를 들어, 시스템에서 일반적으로 모든 int객체에 4 바이트 정렬 __attribute__((packed))이 필요한 경우 int구조체 멤버가 …