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
[38119] Re:Re:워드 정열
김상면 [] 816 읽음    2004-11-21 17:45
캬~~~~~~~~
감사합니다.



신동승,無敵 님이 쓰신 글 :
: 0. 얼마나 할당(정렬)될까?
: - 4 비트 마이크로프로세스에서는 니블(4 bit)씩 정렬됩니다. (믿거나 말거나 -_-)
: - 8 비트 도스에서는 1 바이트씩 정렬됩니다.
: - 16 비트 Win3.1에서는 2 바이트씩 정렬됩니다. (요건 자신없군요)
: - 32 비트 Win9X에서는 4 바이트씩 정렬됩니다. (요것도 자신없군요 -_-)
: - 그 뒤로는.. 컴파일러에서 정하기 나름입니다. (OS에 영향 타는지는 모르겠지만 XP를 쓰는 제 노트북에서는 VC++이나 Builder나 둘 다 8 byte 정렬을 하는군요)
:
:
: 1. Builder 컴파일로 옵션으로 설정하기
: - Ctrl+Shift+F11을 눌러 프로젝트 옵션을 엽니다.
: - Advanced Compiler를 선택합니다.
: - Data Alighment를 찾아서 Byte(1 byte 정렬), Word(2 byte 정렬), Double word(4 byte 정렬), Quod Word(8 byte 정렬) 중 원하는 대로 고릅니다.
: - 각각 리빌드 올을 해서 sizeof(Bit)로 크기를 한번씩 찍어 봅니다.
: - 구조체가 선택한 대로 할당되어 있을 겁니다. (프로젝트에서 사용한 모든 구조체에 적용됩니다)
:
:
: 2. 전처리 매크로 사용하기
: - #pragma pack(push, 1), #pragma pack(push, 2), 기타 등등 원하는 대로 구조체 앞에 써 줍니다.
: - 각각 리빌드 올을 해서 sizeof(Bit)로 크기를 한번씩 찍어 봅니다.
: - 구조체가 선택한 대로 할당되어 있을 겁니다. (단, #pragma가 선언된 이후로 선언된 구조체에 대해서만 적용됩니다)
: - 특정 구조체만 정렬하고 싶으면 구조체 앞에서 #pragma pack을 한 후 구조체 뒤에서 #pragma pack(pop, 1), #pragma pack(pop, 2), 기타 등등을 합니다. (push와 pop 사이에 있는 것만 뒤에 써 준 크기만큼 할당됩니다)
: - 아래는 예제입니다
:
: #pragma pack(push, 1)
:
: struct stBit
: {
:     char cStartByte;
:     char szData[21];
:     char cEndByte;
: };
:
: #pragma pack(pop, 1)
:
:
: 김상면 님이 쓰신 글 :
: : 님들 정부 기관에서 사용하면 대체로 100%확실한거 맞지요?
: :
: : 제가 C언어 책을 한권 읽었는대 그책에서는 아래의 구조체가
: : struct Bit
: : {      int Busy   : 1;
: :         int Not1    : 2;
: :         int Ready : 1;
: : };
: :
: : 2바이트 할당된다 합니다.
: : 모 정부기관 박사님은 1바이트 할당된다고 합니다.
: : 어떤이는 컴파일러 마음이라고합니다.
: : 어떤 책은 반 바이트 할당된다고 합니다.
: :
: : 저의 개인적인 생각으로는 컴파일러가 워드 정열을 하므로 2바이트 할당이 맞다고 보는데 어느게 정말이에요?
: : 2바이트 할당이 맞지요???
: : 그럼

+ -

관련 글 리스트
38107 워드 정열 김상면 813 2004/11/19
38118     Re:워드 정열 신동승,無敵 847 2004/11/21
38119         Re:Re:워드 정열 김상면 816 2004/11/21
38108     Re:워드 정열 강재호.만해 729 2004/11/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.