kyuseo의 게임 프로그래밍
pragma pack, push, pop 구조체 크기 설정 명령어의 설명 본문
개요.. |
#pragma pack은 구조체의 저장 크기를 결정하는 명령어입니다.
즉 BYTE 의 멤버 변수를 1바이트로 실제 저장하는가 아니면 2, 4바이트로 저장하는가를 설정합니다.
하지만 이 명령어 중 일부는 윈도우와 GCC, G++ 의 작동이 틀리기 때문에 모두 작동이 가능한 소스코드를 설명합니다.
윈도우에서만 통하는 코드 |
#pragma pack(push) <---- 이부분에서 GCC는 오류가 발생합니다. #pragma pack(2) struct KBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; }; #pragma pack(pop)
|
GCC, G++ 에서도 통하는 코드 |
#pragma pack(push,2) <---- 이부분에서 GCC도 컴파일이 성공합니다. struct KBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; }; #pragma pack(pop)
|