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

FreePascal Q&A
[28] Re:Re:Re:[질문] C 함수포인터 정의를 파스칼로 변환하려면?
MarunGuy [marunguy] 2614 읽음    2012-08-07 16:40
다음과 같이 해결했습니다.

type
  PUINT_PTR = ^UINT_PTR;
  Tmy_func= function(cmd:PCHAR; args:PUINT_PTR; arg_cnt:longint): longint; stdcall;


C/C++ 만 쓰다가 파스칼을 쓸려니 어렵네요.
특히 C 모듈과 인터페이스하는 부분이 특히 더 어렵네요. C, 파스칼 양쪽 다 이해하고 있어야 되니.

MarunGuy 님이 쓰신 글 :
: 답변 감사합니다.
:
: 32비트,64비트에 따라 크기를 달리할려고 UINT_PTR 을 사용한 것 맞습니다.
: UINT_PTR 만 사용하면 컴파일은 잘 됩니다.
: 하고 싶은 것은 UINT_PTR에 대한 포인터 변수를 선언하는 것입니다.
:
: PINT64 이면 64비트 정수형 포인터를 선언하는 것 아닌가요?
:
: kylix 님이 쓰신 글 :
: : UINT_PTR 64bit에선 int64 32bit에선 integer입니다.
: :
: :
type Tmy_func= function(cmd:PCHAR; args:PINT64; arg_cnt:longint): longint; stdcall;

: :
: : VC에서 디폴트는 cdecl 일겁니다.
: :
: : MarunGuy 님이 쓰신 글 :
: : : 다음과 같이 C 함수포인터 정의 를 파스칼 문법으로 변환하고 싶습니다.
: : :
typedef int (*my_func)(const char *cmd, UINT_PTR *args, const int arg_cnt);

: : : 일단 다음과 같이 해보았는데 ^UINT_PTR 여기서 컴파일에러가 납니다.
: : :
type Tmy_func= function(cmd:PCHAR; args:^UINT_PTR; arg_cnt:longint): longint; stdcall;

: : :
: : : 원 C소스는 vs2008 로 컴파일하고 있는데 위의 typedef 로대로 선언할 경우
: : : calling convention 을 stdcall 로 하는 것이 맞나요?

+ -

관련 글 리스트
25 [질문] C 함수포인터 정의를 파스칼로 변환하려면? MarunGuy 2491 2012/08/07
26     Re:[질문] C 함수포인터 정의를 파스칼로 변환하려면? kylix 2508 2012/08/07
27         Re:Re:[질문] C 함수포인터 정의를 파스칼로 변환하려면? MarunGuy 2521 2012/08/07
28             Re:Re:Re:[질문] C 함수포인터 정의를 파스칼로 변환하려면? MarunGuy 2614 2012/08/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.