kyuseo의 게임 프로그래밍

pragma pack, push, pop 구조체 크기 설정 명령어의 설명 본문

C++ 개발

pragma pack, push, pop 구조체 크기 설정 명령어의 설명

kyuseo 2009. 8. 5. 14:23

개요..

 

#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)