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
[45699] Re:C point 를 C++ 에서 변환하는 방법 알려주세요
장성호 [nasilso] 977 읽음    2006-07-18 17:52
4차이가 나는것이 맞습니다.

왜냐하면 win32에서는 기본적으로 메모리를 잡을때 32bit씩(4Byte)씩 잡으니까요

typedef struct
{
     BYTE A;
     BYTE B;
     BYTE C;
}ABC;

ABC KK[2];

위경우  &KK[0].A 와  &KK[1].A 의 하면  차이가 3이 아니라 4가 납니다.
이것도 같은경우죠

그럼 어떡케 하면되나?
#pragma를 이용하시면 됩니다.
아래와 같이 하시면 #pragma pack 사이에 선언된 구조체는
그냥 다 붙어서 메모리에 잡힙니다.

#pragma pack(push,1)
typedef struct
{
     BYTE A;
     BYTE B;
     BYTE C;
}ABC;
#pragma pack(pop)


#pragma 지시어의 사용법에 대해서는

팁&트릭 게시판에 임프님께서 올려놓으신
#pragma 지시어의 사용법 정리를 참조하십시요

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=106

그럼





리이 님이 쓰신 글 :
: 제가 지금 C++ 공부 중인데요. 얼마전 좋은 component 를 구해서(수학 Graph 관련) 간단한 그래프 작업중인데요
:
: 현재 C로 되어 있는 Source 를 이용하려고 합니다
:
: typedef struct {
:     short  a;
:     L_S  b[22];
:     } TOTAL_S;
:
: typedef struct {
:      L0_U L0;
:      L1_U L1;
:      L2_U L2;
:      L3_U L3;
: } L_S;
:
: typedef union {
:      L0_ B BITWISE;
:      L0_W WORDWISE;
: } L0_U;
: /* L1_U L2_U L3_U 는 L0와 똑같습니다 */
: typedef struct {
:      unsigned int  d :16;
: } L0_B;
:
: typedef struct {
:      unsigned short  f;
: } L0_W;
:
: 이런 struct 구문이 C 파일에서 선언이 되어 있는데  C 쪽에서 찍어보면 &b.L0 와 &b.L1 의 address 가 4차이납니다
: 2차이가 나야 되지 않나요?
: 이러한 struct 형태의 point 형태의index 를 포함하는 C 함수를 C++ 에서 호출하는데 2씩 증가하지 않아 넘 힘듭니다
:
: C 파일을 C++ 파일로 바꾸면 가볍게 해결되겠지만 C로 된 파일을 변경하면 지금 만드는 간단한 program의 의미가
: 없어 져서요
:
: 고수님의 의견 기다립니다
:
: 감사합니다

+ -

관련 글 리스트
45694 C point 를 C++ 에서 변환하는 방법 알려주세요 리이 891 2006/07/18
45699     Re:C point 를 C++ 에서 변환하는 방법 알려주세요 장성호 977 2006/07/18
45713         Re:Re:C point 를 C++ 에서 변환하는 방법 알려주세요 리이 971 2006/07/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.