포인터계의 마왕, 함수포인터입니다. C문법책을 찾아 보세요. gtr_port_set이라는 함수포인터(이 함수포인터는 void형을 최종 리턴합니다.)에 router_val이라는 함수를 대치하여 실행하는 명령문 같습니다. (소스전체가 있어야 정상적인 해독이 가능할 듯)
아시지 싶은데, 참고삼아 말씀드리면, 함수포인터는 프로그램의 코딩라인을 줄이고, 보다 간편하게 처리하고자 사용하는데, 이를 사용할 경우, 욕 먹기 싶상입니다. 소스라인이야 줄어들지만 프로그램을 이해하는데 아주 어려워지고, 나중에 유지보수도 힘들어집니다. 자신도 이해하는데 어려워지는 경우가 다반사. -______-;
함수포인터는 하나의 변수이며 이 변수를 이용하여 함수를 실행합니다. 변수의 특징이 가변한다는 것인데 실행시에 여러 함수중, 특정 함수를 지칭하게 하여 해당 경우에 맞는 함수를 실행하기 위해 사용됩니다. 추가적으로 함수명 자체도 하나의 주소번지를 나타낸다는 것은 아시것이고요...
김민철 님이 쓰신 글 :
:
:
:
:
:
:
: 안녕하세요.... 여기 처음 질문을 올립니다.
:
: 이런 문법이 사용이 가능한지가 궁금 합니다 ...
:
: #ifdef TEST_DEF_IDENTY_ON
:
: void (* qtr_port_set = router_val);
:
: /* 등등 ..... */
:
:
: 여기서 qtr_port_set 이란것은 변수가 아니라 어떤 함수 입니다 .
:
: 함수 자체의 주소가 router_val 로 넘어간다는 것은 추측할수 있는데 , 과연 앞에 void (~) 로 묶인 이유가 도데체 뭔지
: 알수가 없습니다.
:
: 혹시 아시는 분은 답변을 부탁 드리고 싶습니다 ..
:
:
:
|