C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20384] Re:pack(1)이 무슨 의미를 가진 것이죠??
조준회 [] 847 읽음    2002-07-25 17:11

확실하진 않은데..

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로.. 작업하신다면.. 음.. 상당히 빡시겠네요.
: :

+ -

관련 글 리스트
20376 #pragma pack(1) 써도 구조체 크기가 16으로 나오는 데요.. 푸흐흐 794 2002/07/25
20378     Re:#pragma pack(1) 써도 구조체 크기가 16으로 나오는 데요.. 달빛자르기 1031 2002/07/25
20380         pack(1)이 무슨 의미를 가진 것이죠?? 푸흐흐 1010 2002/07/25
20384             Re:pack(1)이 무슨 의미를 가진 것이죠?? 조준회 847 2002/07/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.