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
[25862] 구조체와 포인터의 비밀? (c와 C++)
아담이 [] 716 읽음    2003-06-10 15:45
typedef struct bmp_header_rec{
                 BITMAPFILEHEADER bfh;
                 BITMAPINFOHEADER bih;
                 RGBQUAD colors[2];
} bmp_header;

void get_header()
{
   bmp_header bmph;

   p_img_mem = "비트멥파일의 시작 포인터지정";
   bmph = *((bw_bmp_header *) p_img_mem);
}
  위에서의 방법으로 하면 bmph.bfh 만 정확한 데이터값이 들어옵니다.
  뒤에는 이상한 값이 들어옴.

  위의 코드는 비주얼C++ dos format으로 잘 작동됨...

  빌더에서 해보니 나누어서 해줘야 들어오더군요.
  아래와 같이.

    bmph.bfh = *reinterpret_cast<BITMAPFILEHEADER *> (p_img_mem);
    bmph.bih = *reinterpret_cast<BITMAPINFOHEADER *> ((p_img_mem +  sizeof(bmph.bfh)));
    bmph.colors[0] = *reinterpret_cast<RGBQUAD *> ((p_img_mem +  sizeof(bmph.bfh) + sizeof
                                                                         (bmph.bih)));
    bmph.colors[1] = *reinterpret_cast<RGBQUAD *> ((p_img_mem +  sizeof(bmph.bfh) + sizeof
                                                         (bmph.bih)+sizeof(RGBQUAD) ));

   왜그럴까요?  bfh와 bih, bih와 collors사이에 1byte씩이 들어가는것 같은데 이유가 뭐죠
   아시는분 저의 미칠것같은 궁금증좀 풀어주세요.. 잠이 안와요....


   즐거운 하루 되시길... 

+ -

관련 글 리스트
25862 구조체와 포인터의 비밀? (c와 C++) 아담이 716 2003/06/10
25880     #pragma pack(1) 해주니 되는군요. 아담이 679 2003/06/11
25867     답변아니라 질문.. (지송) Builder MySelf : 610 2003/06/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.