함수포인터 형변환

Programming/C/C++ RSS Icon ATOM Icon 2007/05/08 19:27 조재혁
많은 분들께서 함수포인터의 형변환에 대해서 헷갈리시는 분들이
계시는 것으로 알고 있습니다.
저 또한 상당히 헷갈렸던 부분이고요.
간단히 그것을 설명하기 위해서 한가지 예를 보여드립니다.
보시고서 요긴하게 사용하세요.
저 같은 경우는 C로 만들어진 여러가지 종류의 함수를
C++ class에서 함수 포인터로 연결해서 사용할때 자주 사용하는데
여러분들도 그런 경우 없었나요?

코드:
/* Function cast example by JaeHyuk Cho - http://minzkn.pe.ky */

typedef int (*t_FunctionTypedef)(int, int, void *, char **);

int MyTestFunction(int s_a, int s_b, void *s_c, char *s_d[])
{
(void)s_a, (void)s_b, (void)s_c, (void)s_d;
return(0);
}

int main(int s_Argc, char *s_Argv[])
{
int (*s_MyFunctionPointer)(int, int, void *, char **);
void *s_TestCast;

/* (void *)로 형변환합니다. 이것은 다 아시겠죠? */
s_TestCast = (void *)MyTestFunction;

/* 이것이 우리가 궁굼해 하던 함수형변환 입니다. (void *)를 어떻게 함수형으로 캐스팅 할것인가? */
s_MyFunctionPointer = (int (*)(int, int, void *, char **))s_TestCast;

/* 이것은 단순하게 사용하는 방법이며 가장 널리 사용되고 있죠? */
s_MyFunctionPointer = (t_FunctionTypedef)s_TestCast;

return(0);
}

/* End of source */
크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
修身齊家治國平天下 (수신제가치국평천하)
匠人精神 (장인정신)
도구의 결함은 장인의 손으로 극복한다.
창조는 지식보다 위대하다.
2007/05/08 19:27 2007/05/08 19:27
받은 트랙백이 없고, 댓글 2개가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/94

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/94

트랙백 주소 :: http://blog.minzkn.com/trackback/94

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/94

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/94

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/94
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/94
  1. alones 2007/05/08 20:34  댓글주소  수정/삭제  댓글쓰기

    예전에 저도 (왜 필요했는지는 기억이 잘 나지 않는데) 함수 포인트를 형 변환 해봤었던 기억이 나는 군요.

    void* 이 넘이 어찌나 마약 같은지... ^^;;;

    MINZKN 님과 유사한 이유였던 것 같습니다.

    그리고 함수 포인터에 관한 괜찮은 문서를 최근에 번역한게 있어서 트랙백 걸었습니다.

  2. yundream 2007/05/08 23:05  댓글주소  수정/삭제  댓글쓰기

    void * 열라 헷갈림 -.-;

[로그인][오픈아이디란?]