본문 바로가기
모던 C 언어/사소하지만 유용한 C언어 매크로들

1. 로그 출력 시 유용한 매크로들 (__func__, __LINE__, __FILE__, __DATE__, __TIME__)

by 커널패닉 2022. 1. 3.
반응형

printf로 로그를 출력하다보면 로그가 좀 더 풍부했으면 좋겠다는 생각들을 종종 하게 된다. 예를 들어서 현재 어떤 파일에서 몇번째 라인에 에러가 발생했는데, 특정 모듈은 언제 빌드가 되었는지 등등을 말이다. 다음 소개하는 매크로는 로그를 더욱 풍부하게 만들어 줄 수 있는 매크로 들이다.

매크로 타입 내용
__func__ 문자열 (%s) 매크로가 호출된 함수를 출력한다.
__LINE__ 정수 (%d) 매크로가 호출된 라인을 출력한다.
__FILE__ 문자열 (%s) 매크로가 출력된 파일을 출력한다. (빌드한 위치 기준)
__DATE__ 문자열 (%s) 빌드가 이뤄진 날짜를 출력한다.
__TIME__ 문자열 (%s) 빌드가 이뤄진 시간을 출력한다.

어렵지 않은 내용이라 금방 이해할 수 있다. 아래는 위 매크로들을 이용해서 로그 출력을 하는 예제 코드이다.

#include <stdio.h>

#define log(fmt, ...) \
    printf("[%s: %d][%s] " fmt "\t\t\t (%s, %s)\n", \
    __FILE__, __LINE__, __func__, __DATE__, __TIME__);

int main() {
    log("Hello, world")
}

출력

[macro.c: 8][main] Hello, world			 (Jan  3 2022, 21:04:53)
반응형