[C언어] func(args...)에 관하여.
글쓴이: sound79 / 작성시간: 목, 2005/08/11 - 4:22오후
#include <stdio.h> #include <stdarg.h> #include <stdlib.h> #define PRINTK(args...) print(args) void print(char *args, ...){ va_list vlist; va_start(vlist, args); vfprintf(stdout, args, vlist); va_end(vlist); } int main() { PRINTK("%d\n", 123); return 0; }
여기서 PRINTK(args...) <== 이부분을 잘 모르겠네요.
gcc에서는 컴파일이 되나 다른 컴파일러에서는 에러가 발생합니다.
부트로더를 작성중인데 다른 부트로더를 참조하니 #define PRINTK(args...) print(args)
이런 구문이 보여서요.. 테스트로 gcc로 컴파일을 하니깐 잘 됩니다.
하지만 다른 Visual C에서는 오류가 뜨네요.error C2010: '.' : unexpected in macro formal parameter list
그리고 현재는 ADS1.2를 사용하고 있습니다. 그런데 이렇게 하니 too few arguments to macro ~~라고 뜨네요.
혹시 ANSI에 맞지 않는 구문인지요?
Forums:
GNU CPP에서 지원하는 named variadic macro라고 합니
GNU CPP에서 지원하는 named variadic macro라고 합니다.
C99에서는 anonymous variadic macro를 사용합니다.
-- 덧붙이는 글 --
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/cpp/variadic-macros.html
ADS 1.2 시라면 lovewar님이 쓰신 C99 형식으로 쓰시면 됩니
ADS 1.2 시라면 lovewar님이 쓰신 C99 형식으로 쓰시면 됩니다.
저도 ADS 1.2 에서 저렇게 쓰고 있네요 :D
dasomoli의 블로그(http://dasomoli.org)
dasomoli = DasomOLI = Dasom + DOLI = 다솜돌이
다솜 = 사랑하옴의 옛 고어.
Developer! ubuntu-ko! 다솜돌이 정석
네 그렇군요..감사합니다..
네 그렇군요..
감사합니다..
===
블로그: http://sound79.tistory.com
댓글 달기