가변 변수 MACRO와 FUNCTION

나중에 log 용으로 사용하기 위한 printf 함수를 살짝 매크로로 정의를 하려고 보니 -_-

아무리 해도 안된다는 -_-

 

그래서 결국 구글 형님께 문의한 결과 다음과 같은 결과를 얻었다.

 

  1. #define     nadia_printf(fmt , …)
  2.                             printf(“%s:%dn” fmt, __FUNCTION__, __LINE__, __VA_ARGS__ )

 

그냥 가변 변수를 이용하는 함수의 경우에는 보통 다음과 같이 이용한다.

  1. void test_printf(const char *fmt, …){
  2.     char buffer[1024];
  3.     va_list args;
  4.     va_start(args, fmt);
  5.     vsprintf( buffer, fmt, args );
  6.     va_end(args);
  7.     puts(buffer);
  8. }

 

후자의 경우는 자주 쓰던 방법이긴 한데, MACRO로 한번 해볼려고 발악하다가 -_-

T.T

 

최초에 했던 것은 다음 형태다.

  1. #define nadia_printf(x)   printf(x)

 

그런데 파라매터가 2개 이상되니 바로 오류 T.T

 

결국 구글형님의 도움으로 제대로된 Macro 된 로그를 찍는 기능을 추가했다 -_-

요새 왜 이리 모르는게 많을까?