티스토리 뷰
가변인자 함수가 있듯이, 매크로도 가변인자 매크로가 있습니다.
가변인자 매크로 역시 ... 의 매개변수를 받는데요. 매크로의 경우 가변인자 함수보다 훨씬 사용하기 간편하게 되어있어 자주 사용하는 편입니다.
#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(표준에러)의 경우 모니터로 출력이 됩니다.
'C, C++ > C, C++' 카테고리의 다른 글
[goto문 에러] jump to label '%LABEL%' [-fpermissive] (0) | 2015.06.23 |
---|---|
atoi(), itoa() 함수에 대하여.. (8) | 2014.03.03 |
c언어 매크로 사용법 - 2. 가변인자 매크로 (0) | 2014.03.02 |
c언어 매크로 사용법 - #, ## 연산자 (2) | 2014.03.02 |
C언어 bsearch() - 이진탐색 함수 (0) | 2014.02.16 |
C언어 가변인자(가변파라미터)를 사용해보자 (7) | 2014.01.25 |
댓글
공지사항
- Total
- 846,114
- Today
- 49
- Yesterday
- 277
TAG
- NgZone
- Rx.js
- 스위프트
- vim
- zone
- 챗봇
- 안시 컬러
- JavaScript
- 타입스크립트
- 리눅스 터미널 색상
- qemu linux arm
- 우분투 16.04
- ECMA2015
- git proxy
- QT
- observable
- itoa
- ansi color
- 안시 색상
- typeScript
- angular2
- ZONES
- Angular
- 폰트 조정
- terminal 색
- Swift
- lua table
- C언어
- Zone.js
- git 설정