티스토리 뷰


가변인자 함수가 있듯이, 매크로도 가변인자 매크로가 있습니다.

가변인자 매크로 역시 ... 의 매개변수를 받는데요. 매크로의 경우 가변인자 함수보다 훨씬 사용하기 간편하게 되어있어 자주 사용하는 편입니다.


#define VA_PRINT(fmt, ...)        printf(fmt, __VA_ARGS__)


위와 같이 사용할 수 있습니다.

가변인자 함수 때처럼 va_startf나 vnprintf 따위의 매크로를 이용할 필요가 없습니다.

__VA_ARGS__ 를 넣어주면 알아서 포맷으로 변환하여 출력해 줍니다.



C코드 예제를 하나 만들어보았습니다.


#include <stdio.h>

#define VA_PRINT(fmt, ...)     fprintf(stdout, "결과: " fmt "\n", __VA_ARGS__)

int main()
{
    int a=10, b=10;

    VA_PRINT("a = %d, b = %d 입니다.", a, b);
    a=20; b=25;
    VA_PRINT("a = %d, b = %d 입니다.", a, b);

    return 0;
}


출력결과:



 참고로 위에 사용한 fprintf의 경우 제일 앞의 인수가 파일을 가리키는 file descriptor 라면 해당 파일로 저장이 되지만, stdout(표준출력), stderr(표준에러)의 경우 모니터로 출력이 됩니다.


댓글
댓글쓰기 폼