GCC Macro 변환 질문
글쓴이: yeilho / 작성시간: 화, 2007/10/30 - 6:35오전
어딘가 정보가 있을듯 한데, 도무지 못찾겠어서 질문을 드립니다.
아래와 같은 마크로를 윈도우즈에서도 사용을 하려고 컴파일(cl)을 해보니 에러가 나오네요.
error C2010: '.' : unexpected in macro formal parameter list
extern void _log_print(const char *fmt, ...); #define _TPRINTK(__func__,__level__,fmt,args...) \ do { \ if ((trig_debug & (__level__))) { \ _log_print("%s: "fmt,__func__,##args); \ } \ } while(0) #define lprintk(fmt, args...) \ _TPRINTK(__FUNCTION__,__level__,fmt,##args)
에러를 확인해 보니 아래와 같은 메세지를 발견했습니다.
macros with variable arguments are not supported by ANSI C
혹시 그럼에도 불구하고 좋은 방안이 있으시면 조언 부탁드립니다.
감사합니다.
Forums:
MSDN
아래 MSDN 문서를 참고하세요.
http://msdn2.microsoft.com/en-us/library/ms177415.aspx
#define ASDF(asdf...)
#define ASDF(asdf...) 식으로 선언하는 것은 C/C++ 표준에 없는 GCC만의 확장입니다. #define ASDF(...) 식으로 선언하고 __VA_ARGS__로 사용해야 C 표준(정확하게는 C99)에 따를 수 있습니다. GCC는 둘 다 지원합니다.
답변
답변 감사합니다.
위의 문서를 보기는 했는데, 제가 정확히 무엇을 잘못했는지 cl로 컴파일하면 계속 에러가 나오더군요. 문서에 있는 예제를 컴파일해도 같은 에러가 나오는데 혹시 좋은 의견 있으시면 부탁합니다.
Linux rules!!!
Linux rules!!!
[완료]
[완료]
문서를 보니 해당 기능은 Visual C++ 2005 부터 적용된다고 하네요.
제가 가지고 있는 컴파일러가 2003년이다 보니 어렵겠네요.
감사합니다.
Linux rules!!!
Linux rules!!!
댓글 달기