이번 에러는... 뭔가 논리적으로 원인을 찾아 가기 힘든 경우였는데, 이런 상황을 알고 있다면 후에 이런 상황을 맞딱뜨렸을 때 이와 같은 원인 역시 고려할 수 있을 것이다. 결론적으로 얘기하자면,
std::cout 으로 함수 포인터를 출력할 경우 boolean 으로 형변환되어 1 이 출력된다. 만약 함수의 출력값이 엉뚱하게도 계속 1 로 나온다면 이와 같은 원인 때문일 수 있다.
문제는 다음과 같은 함수를 출력하는 상황에서 발생했다.
문제가 생겼던 부분은 아래 쪽 코드인 make_stat_page.cpp 에서 130 번째 줄이다. 확인차 131번 줄도 만든 것인데, 여하튼 저렇게 했기 때문에 get_current_time 함수의 원본인 위쪽 코드의 내용에도 불구하고 계속 1 만 출력이 되었다. 그것은 곧 함수 이름 뒤에 괄호를 쓰지 않았기 때문에 함수 포인터로 인식이 되었고, std::cout 은 이 경우 포인터가 어떤 논리에 의해 boolean 으로 변환이 1 이 출력이 된 듯 하다.
'컴퓨터 > 디버깅' 카테고리의 다른 글
긴 오류 메세지 알아 보기 (0) | 2013.05.22 |
---|---|
오랜 시행 후 프로그램이 멈추는 경우 - GDI 문제 (1) | 2013.01.01 |
STL의 set 의 iterator 와 const_iterator에 따른 오류 (0) | 2012.12.06 |
less 를 찾을 수 없어서 에러가 난 경우 (0) | 2012.05.20 |
a required resource was unavailable (0) | 2011.08.07 |