CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): Tin (엉덩탱탱™)
날 짜 (Date): 2004년 11월 29일 월요일 오전 06시 38분 26초
제 목(Title): Re: printf macro


답이 늦었는데

#define TRACE(f,a...) printf(f , ##a)

는 GCC extension인 것으로 알고 있습니다.

##a 는 가변인자 리스트를 나타냅니다. 

f와 , 사이에 공백을 넣는 이유는

가변인자 부분인 a...에 아무 것도 안 들어가고

그때문에 그 앞의 ,도 사라지는 경우를

대응하기 위한 것으로 알고 있습니다.



그리고

저 앞에서

#ifdef DEBUG
#define TRACE printf
#else
#define TRACE(...)
#endif

와 같은 구문이 보이는데

제대로 하시려면

#ifdef DEBUG
#define TRACE printf
#else
#define TRACE(...) (void) 0
#endif

와 같이 해야하는 것으로 알고 있습니다.


@ Happy C~ (가 될 수 있나?)

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.