티스토리 뷰
가변인자 함수가 있듯이, 매크로도 가변인자 매크로가 있습니다.
가변인자 매크로 역시 ... 의 매개변수를 받는데요. 매크로의 경우 가변인자 함수보다 훨씬 사용하기 간편하게 되어있어 자주 사용하는 편입니다.
#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() 함수에 대하여.. (12) | 2014.03.03 |
c언어 매크로 사용법 - #, ## 연산자 (2) | 2014.03.02 |
C언어 bsearch() - 이진탐색 함수 (0) | 2014.02.16 |
C언어 가변인자(가변파라미터)를 사용해보자 (7) | 2014.01.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- terminal 색
- git proxy
- 타입스크립트
- Rx.js
- 폰트 조정
- ZONES
- ECMA2015
- 안시 색상
- NgZone
- Zone.js
- JavaScript
- typeScript
- git 설정
- 우분투 16.04
- itoa
- 안시 컬러
- 리눅스 터미널 색상
- qemu linux arm
- lua table
- 챗봇
- QT
- C언어
- observable
- 스위프트
- angular2
- zone
- Swift
- vim
- ansi color
- Angular
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함