function 선언시 (xx, yy, ...) 의 정확한 의미좀 알려주세요

BlackTiger의 이미지

아래와 같이 선언 되어 있네요..

strct aastruct {
   int  _aaa;
   int  _bbb;
   .
   .
   .

   void (*msg)(int id, const char *pointer, ... );
   .
   .
   .
};

위의 '...' 의 의미가 정확히 뭔지..책에도 안나온거 같고..
머 의미상으로는 매개변수가 더 있을 수 있다는 얘긴거 같은데..
.학교다닐때는 이런거 안배웠는데..궁금한거 천지네요..ㅜㅜ;;

김충길의 이미지

가변 인자 선언입니다.
stdarg.h 나 man stdarg 를 참고하세요.

BlackTiger wrote:
아래와 같이 선언 되어 있네요..

strct aastruct {
   int  _aaa;
   int  _bbb;
   .
   .
   .

   void (*msg)(int id, const char *pointer, ... );
   .
   .
   .
};

위의 '...' 의 의미가 정확히 뭔지..책에도 안나온거 같고..
머 의미상으로는 매개변수가 더 있을 수 있다는 얘긴거 같은데..
.학교다닐때는 이런거 안배웠는데..궁금한거 천지네요..ㅜㅜ;;

screen + vim + ctags 좋아요~

kimsk99의 이미지

가변인자 함수의 대표적인 것이 printf입니다.

printf의 선언은 다음과 같이 되어있습니다.

int printf(const char *format, ...);

가변 인자의 사용법은 아래 코드처럼 합니다. (solaris man page에 나오는 내용입니다.)

          #include <stdarg.h>
          #define MAXARGS     31
          void f1(int n_ptrs, ...)
          {
               va_list ap;
               char *array[MAXARGS];
               int ptr_no = 0;

               if (n_ptrs > MAXARGS)
                    n_ptrs = MAXARGS;
               va_start(ap, n_ptrs);
               while (ptr_no < n_ptrs)
                    array[ptr_no++] = va_arg(ap, char*);
               va_end(ap);
               f2(n_ptrs, array);
          }

자세한 것은 위에 답변하신 분 말씀데로 man stdarg해보시던지, 아니면 MSDN에서 va_list로 search해 보십시오.

BlackTiger의 이미지

답변 감사드립니다..
이제야 알것 같네요..^^;;