프로그래밍/C,C++,C#

[C/C++] 간편하게 LOG 남기기(feat. 가변인자)

Beginner:) 2023. 3. 29.
320x100

C언어에 가변인자라는 개념이 존재하는데 파이썬에서 *args 또는 **kargs와 같은 개념이라 생각할 수 있다.

 

백문이 불여일타

 

사용환경 : debian gcc (컴파일러에 따라 조금씩 다를 수 있으니 참고)

 

#include <stdio.h>
#define LOG(msg, ...) printf("%s파일에서 %s함수에서 %d번째 줄 메시지 : " msg "\n",__FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__)

void main(){
    LOG("message %d %f %s",999, 3.14, "Hello");
}

 

 

보통 디버깅을 위한 LOG문을 위와 같이 매크로함수로 정의하여 사용한다.

(매크로 함수뿐만 아니라 일반적인 함수에서도 사용이 가능하다)

 

printf를 사용하면 사용할 때마다 __FILE__, __FUNCTION__, __LINE__을 입력해야 할뿐더러 매개변수도 매번 같은 개수일 수 없기 때문에 가변인자 ##__VA_ARGS__를 사용한다.

 

특이한 점은 string 인자인 msg의 양옆에 쉼표 또는 +기호가 없다는 점인데, 이 문법은 기회가 되면 알아봐야겠다.

물론 귀찮아서 언제 알아볼지는 모른다.

컴파일러에 따라 가변인자의 선언(정의?) 문은 다를 수 있으므로 검색하여 사용하자.

반응형

댓글