호출기능의 파일명, 회선번호, 함수명 출력 - C Prog
info(), debug(), error() 함수가 포함된 log.c 파일을 만들고 싶습니다.이러한 기능은 파일 이름, 라인 번호 등을 인쇄하지 않고 작동합니다.그래서 이 기능 중 하나를 호출할 때 호출자의 파일명, 회선번호, 기능명을 덤프하고 싶습니다.정확히 어떻게 역추적을 할 수 있죠?C를 역추적할 수 있는 방법이 있나요, 아니면 매크로를 사용한다면 어떻게 할 수 있나요?
매개 변수를 통해 데이터를 함수에 전달합니다(매크로의 도움을 받을 수도 있음).
int info(const char *fname, int lineno, const char *fxname, ...) { /* ... */ }
int debug(const char *fname, int lineno, const char *fxname, ...) { /* ... */ }
int error(const char *fname, int lineno, const char *fxname, ...) { /* ... */ }
그리고 그들을 부르는 것은
info(__FILE__, __LINE__, __func__, ...);
debug(__FILE__, __LINE__, __func__, ...);
error(__FILE__, __LINE__, __func__, ...);
참고:__func__
C99; gcc, 모드 C89에서__FUNCTION__
매크로를 사용한다면, 이것을 사용해서 만들 수 있을 것이라고 생각합니다.__FILE__
,__LINE__
,그리고.__FUNCTION__
.예를들면,
#define INFO(msg) \
fprintf(stderr, "info: %s:%d: ", __FILE__, __LINE__); \
fprintf(stderr, "%s", msg);
기능도 사용할 수 있지만 전달해야 합니다.__FILE__
, 그들이 정확한 값을 가졌는지 확인하기 위해서입니다.
언급URL : https://stackoverflow.com/questions/8884335/print-the-file-name-line-number-and-function-name-of-a-calling-function-c-pro
'source' 카테고리의 다른 글
jQuery의 .hide()와 표시할 CSS 설정의 차이: 없음 (0) | 2023.11.01 |
---|---|
다른 버전의 mariadb에 대한 다른 검색 키 (0) | 2023.10.27 |
데이터 프레임에서 발생하는 문자열 모두 바꾸기 (0) | 2023.10.27 |
입력 버튼에서 외곽선 테두리를 제거하는 방법 (0) | 2023.10.27 |
우커머스 3 온라인 결제 거래 없는 주문에 대한 구글 분석 (0) | 2023.10.27 |