함수 포인터 사용 하는 이유
- 함수가 받는 매개변수고 동일한 수많은 함수가 있을때.
- 그 함수를 동적으로 바인딩 해야할 필요가 있을때.
- 함수 포인터에 함수 주소를 바꿔 넣어 주면 Register라고 해서 어떤 역할을 하는 이벤트에 대해 등록할 때,
함수포인터로 등록시키면 시스템 내부에서는 함수 포인터를 호출하므로 매우 빠르고 직관적인 동작이 가능.
- 단점 : 가독성이 떨어짐, 디버그 시 추적하기 까다로움.
- 주의 사항 : 함수포인터가 null 일 경우 해야하는 기본 동작을 지정해 줘야 한다. 안 그러면 0xc0000005 뱉고 꼴까닥~
typedef bool (*funcName)( const char*, int );
bool Func_( const char* buf, int choice )
{
printf( " Text : %s \n ", buf );
printf( " Int : %d \n ", choice );
return true;
}
void SetData( funcName Send, int choice )
{
Send( "A", choice );
}
void Function_C( funcName Send, int choice )
{
SetData( Send, choice );
}
void main()
{
Function_C( &Func_, 1 );
}
의외로 간간히 사용할 상황이 오는 것이 함수 포인터 인지라, 잊지 말고 한번은 봐두자...
작동 개념만이라도...
개인적으로 은근 까다롭고, 가독성이 떨어져서 함수 포인터를 기피하고 분기문 같은 경우 switch나 FSM으로 관리 한다만은... 그래도 쓸 상황이 한번은 꼭 오긴 오더라...
'[ Programing ] > C++' 카테고리의 다른 글
_tprintf() 한글 출력. _wsetlocale( LC_ALL, _T("korean") ) (0) | 2011.04.26 |
---|---|
[Debug] MS C++ 디버깅 매직넘버 (0) | 2011.04.16 |
C++ Debugging (0) | 2010.06.25 |
class 속성 private, protected, public 효율적 사용법. (0) | 2010.02.24 |
Function & Method Name 정리 (0) | 2010.02.18 |