|
확실하진 않은데..
project->Option -> Advanced compiler -> data alignement 를 byte로 해보세요..
저는 아래와 같이 나오는 이유는 최적화 때문으로 이해하고 있습니다.
입출력이 가장 빠른것은 cpu가 32비트 이므로 32비트를 읽고 쓸때입니다.
아래와 같은 구조체를 사용시 32비트 단위로 자료를 Read/Write하기 위해서..
강제로 컴파일러가 정렬시키는 것이죠..
푸흐흐 님이 쓰신 글 :
:
: 밑에 처럼 하니까 정말 14로 나오네요...
:
: 꼬 이렇게 함수 안에 써넣어야 하는 건가요..
: 아깐 전역 헤더 파일 에 선언 해서 했거던요...(Global.h)
: 모든 파일이 다 인클루드 하는 파일에 했는 데..
: 16으로 나오던데..
:
: 구조체 크기가 이상하게 나올때 마다 함수에 같이 넣어서 구조체 다시 정의 해서
: 사용 해야 하는 건가요??
:
:
:
:
: 달빛자르기 님이 쓰신 글 :
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : #pragma pack(1)
: : typedef struct tagBITMAPFILEHEADER
: : { // bmfh
: : WORD bfType;
: : DWORD bfSize;
: : WORD bfReserved1;
: : WORD bfReserved2;
: : DWORD bfOffBits;
: : } BITMAPFILEHEADER;
: :
: : ShowMessage(sizeof(BITMAPFILEHEADER));
: : }
: :
: : 제가 방금 이렇게 하니까 분명 14나오네요.
: :
: :
: :
: : API로.. 작업하신다면.. 음.. 상당히 빡시겠네요.
: :
|