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
[45713] Re:Re:C point 를 C++ 에서 변환하는 방법 알려주세요
리이 [] 971 읽음    2006-07-18 19:19
안녕하세요 답변 잘 보았습니다.

제가 아직 실력이 부족하여 #pragma 를 사용 해보았는데 잘 되지 않는군요..

제가 이상하게 생각하는 것은  C++ 에서도 short[2] 를 선언하고

&short[0],&short[1] 을  해보면 addr 이 2 차이가 납니다

아래에 제가 적어 놓은 struct 가 모두 short 로 되어 있는데도 불구하고 addr 을 access 하면 +2 가 아니고 +4가 되어

있습니다

혹시 방법이....?


다시 한번 답변 감사드립니다











장성호 님이 쓰신 글 :
: 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++ 에서 변환하는 방법 알려주세요 장성호 978 2006/07/18
45713         Re:Re:C point 를 C++ 에서 변환하는 방법 알려주세요 리이 971 2006/07/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.