[ANSI-C] __FUNCTION__ 을 바꾸자.
C & C++ 관련 :
2008. 10. 23. 01:00
반응형
출처 : http://blog.minzkn.com/196
우리는 보통 다음과 같이 디버깅할때 많이 사용한다.
(void)fprintf(stdout, "%s:%s:%d message\n", __FILE__, __FUNCTION__, __LINE__);
하지만 아는 사람은 이미 알고 있겠지만 __FUNCTION__ 는 표준에 명시되지 않았다.
그럼 계속 표준에 속하지 않는 __FUNCTION__을 쓰는게 꺼림직하지 않은가?
(void)fprintf(stdout, "%s:%s:%d message\n", __FILE__, __func__, __LINE__);
이것이 표준을 만족하는 함수명 얻어오기다.
이것은 내부적으로 다음과 같이 생각하면 된다.
int main(void)
{
static const char *__func__[] = "main";
(void)fprintf(stdout, "%s\n", __func__);
/* ... */
}
vi 에서 __FILE__, __LINE__ 은 highlight 가 되어 표시되는데 __FUNCTION__ 는 그렇지 않다는것을 이상하게 여겼는데 알고보니 __func__ 은 highlight 되어라~ 하는 것에서 이 궁굼증은 해결되었습니다. ㅎㅎ
우리는 보통 다음과 같이 디버깅할때 많이 사용한다.
(void)fprintf(stdout, "%s:%s:%d message\n", __FILE__, __FUNCTION__, __LINE__);
하지만 아는 사람은 이미 알고 있겠지만 __FUNCTION__ 는 표준에 명시되지 않았다.
그럼 계속 표준에 속하지 않는 __FUNCTION__을 쓰는게 꺼림직하지 않은가?
(void)fprintf(stdout, "%s:%s:%d message\n", __FILE__, __func__, __LINE__);
이것이 표준을 만족하는 함수명 얻어오기다.
이것은 내부적으로 다음과 같이 생각하면 된다.
int main(void)
{
static const char *__func__[] = "main";
(void)fprintf(stdout, "%s\n", __func__);
/* ... */
}
vi 에서 __FILE__, __LINE__ 은 highlight 가 되어 표시되는데 __FUNCTION__ 는 그렇지 않다는것을 이상하게 여겼는데 알고보니 __func__ 은 highlight 되어라~ 하는 것에서 이 궁굼증은 해결되었습니다. ㅎㅎ
반응형
'C & C++ 관련' 카테고리의 다른 글
fprintf연습(표준에러_표준출력) (0) | 2008.11.03 |
---|---|
strtok() 문자열을 문자로 자르기 (0) | 2008.10.15 |
터미널 제어 termios (0) | 2008.08.17 |