[C++구조체] #Pragma pack(1) 지시어 이해하기 Word Alignment(#pragma pack) Word Alignment(#pragma pack)는 어려운 개념은 아니지만, 매우 중요한 개념입니다. 우리는 하나의 word가 4바이트란 건 알고 있습니다. 메모리 주소 체계도 4바이트로 이뤄지며, 0x01ab23cd와 같은 값은 0x01, 0xab, 0x23, 0xcd로 각각 분리되어 저장되는 것도 알고 있죠. 알아야 #pragma pack도 이해할 수 있습니다. 그 저장되는 방법은 little Endian과 Big Endian으로 이 경우엔 0x01이 맨 뒤, 또는 맨 앞에 저장될 겁니다. 다소, 부정확한 의미가 될 순 있지만, 0x01이 저장된 주소가 N(1001) 번지라면 그다음 주소..
#ifndef, #define 사용법, 헤더 파일 중복 컴파일, 꼬임 방지 헤더 파일은 서브 시스템이나 다른 코드에 추상화된 인터페이스를 전달하는 메커니즘이다. 한 가지 까다로운 부분은 여러 헤더 파일을 이용할 때 순환 참조나 중복 인크루드되는 경우를 피하는 것이다. 이때 『#ifndef, #define』 사용법으로 해결할 수 있다. 이 두가지를 혼합해 헤더 파일이 중복 컴파일되는, 일명 헤더 파일 꼬임 방지도 할 수 있다. 예를 들어 Logger 클래스를 작성해서 모든 오류 메시지를 로깅해야 할 때, 사용자 설정 정보를 받기 위해 Preferences 클래스를 사용해야 할 수 있다. 그런데 Preferences 클래스가 사용하는 헤더 중에서 의도하지 않게 Logger 클래스를 인클루드 해버릴 수 있다...