계시는 것으로 알고 있습니다.
저 또한 상당히 헷갈렸던 부분이고요.
간단히 그것을 설명하기 위해서 한가지 예를 보여드립니다.
보시고서 요긴하게 사용하세요.
저 같은 경우는 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 */ |



글
댓글을 달아 주세요
댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/94댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/94
예전에 저도 (왜 필요했는지는 기억이 잘 나지 않는데) 함수 포인트를 형 변환 해봤었던 기억이 나는 군요.
void* 이 넘이 어찌나 마약 같은지... ^^;;;
MINZKN 님과 유사한 이유였던 것 같습니다.
그리고 함수 포인터에 관한 괜찮은 문서를 최근에 번역한게 있어서 트랙백 걸었습니다.
void * 열라 헷갈림 -.-;