br /우리는 보통 다음과 같이 디버깅할때 많이 사용한다.br /br /(void)fprintf(stdout, %s:%s:%d message\n, __FILE__, __FUNCTION__, __LINE__);br /br /하지만 아는 사람은 이미 알고 있겠지만 __FUNCTION__ 는 표준에 명시되지 않았다.br /그럼 계속 표준에 속하지 않는 __FUNCTION__을 쓰는게 꺼림직하지 않은가?br /br /(void)fprintf(stdout, %s:%s:%d message\n, __FILE__, __func__, __LINE__);br /br /이것이 표준을 만족하는 함수명 얻어오기다.br /br /이것은 내부적으로 다음과 같이 생각하면 된다.br /br /int main(void)br /{br /nbsp;static const char *__func__[] = main;br /nbsp;(void)fprintf(stdout, %s\n, __func__);br /nbsp;/* ... */br /}br /br /br /vi 에서 __FILE__, __LINE__ 은 highlight 가 되어 표시되는데 __FUNCTION__ 는 그렇지 않다는것을 이상하게 여겼는데 알고보니 __func__ 은 highlight 되어라~ 하는 것에서 이 궁굼증은 해결되었습니다. ㅎㅎbr /
크리에이티브 커먼즈 라이센스
Creative Commons License
2007/06/16 11:26 2007/06/16 11:26
받은 트랙백이 없고, 댓글 4개가 달렸습니다.

댓글+트랙백 RSS :: http://blog.minzkn.com/rss/response/196

댓글+트랙백 ATOM :: http://blog.minzkn.com/atom/response/196

트랙백 주소 :: http://blog.minzkn.com/trackback/196

트랙백 RSS :: http://blog.minzkn.com/rss/trackback/196

트랙백 ATOM :: http://blog.minzkn.com/atom/trackback/196

댓글을 달아 주세요

댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/196
댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/196
  1. thedino 2007/06/16 14:11  댓글주소  수정/삭제  댓글쓰기

    하핫...회사에 로그 남기는 프로그램이
    어떻게 함수이름과 라인수를 표현하는가 했더니..
    (소스볼러다 귀찮아서 패스했던;;)
    이런게 있었군요.......-0-;;
    좋은 정보 감사합니다.ㅋ//

  2. 혀누얌 2007/06/18 17:11  댓글주소  수정/삭제  댓글쓰기

    정보 감사해요 ^^

    C 프로그램을 하면서 디버깅과 같이 기초적인 부분은 정말 모르는 것 같네요...

    역시 공부를 계속 해야하는거 겠죠?

    즐프하세요 ^^

  3. kkamagui 2007/12/04 06:29  댓글주소  수정/삭제  댓글쓰기

    오오~ __func__는 처음봤습니다. 저런 매크로도 있었군요 ;)~ 좋은글 잘봤습니다. ^^

  4. minzkn 2008/01/12 13:04  댓글주소  수정/삭제  댓글쓰기

    __func__ 는 ISO/IEC 9899:1999 에서 명시하고 있어요.
    그래서 그 이전 ANS-C 컴파일러에서는 지원하지 않을수도 있습니다.

    왜 ISO/IEC 9899:1999 에서 __func__을 했는지 안타깝습니다. 차라리 기존의 수 많은 컴파일러들이 __FUNCTION__을 지원하고 있어서 이를 채택하는것이 낳을거 같은데...