본문 바로가기
컴퓨터/디버깅

함수 포인터가 boolean 으로 출력된 경우

by adnoctum 2014. 12. 1.




   이번 에러는... 뭔가 논리적으로 원인을 찾아 가기 힘든 경우였는데, 이런 상황을 알고 있다면 후에 이런 상황을 맞딱뜨렸을 때 이와 같은 원인 역시 고려할 수 있을 것이다. 결론적으로 얘기하자면, 


std::cout 으로 함수 포인터를 출력할 경우 boolean 으로 형변환되어 1 이 출력된다. 만약 함수의 출력값이 엉뚱하게도 계속 1 로 나온다면 이와 같은 원인 때문일 수 있다. 


문제는 다음과 같은 함수를 출력하는 상황에서 발생했다. 





문제가 생겼던 부분은 아래 쪽 코드인 make_stat_page.cpp 에서 130 번째 줄이다. 확인차 131번 줄도 만든 것인데, 여하튼 저렇게 했기 때문에 get_current_time 함수의 원본인 위쪽 코드의 내용에도 불구하고 계속 1 만 출력이 되었다. 그것은 곧 함수 이름 뒤에 괄호를 쓰지 않았기 때문에 함수 포인터로 인식이 되었고, std::cout 은 이 경우 포인터가 어떤 논리에 의해 boolean 으로 변환이 1 이 출력이 된 듯 하다.