티스토리 뷰


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

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


#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(표준에러)의 경우 모니터로 출력이 됩니다.

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글
댓글쓰기 폼