...로 받은 인자들을 다 전달해주려면 어떻게 하나요?


발생하는 문제 및 실행환경

...를 써서 인자를 여러개 받는 함수에서 자기가 받은 인자를 다른 함수에 똑같이 넘겨주려면 어떻게 해야되는지 아시는분 있으면 가르쳐주세요

소스코드

void format_string(char *msg, ...);

void debug_print(int dbg_lvl, char * msg, ...) {
    format_string(msg, ...);/* ...에서 받은 인자를 다 넘겨주려면..? */
    fprintf(stdout, msg);
 }
  • 2016년 02월 11일에 작성됨

조회수 175


1 답변


좋아요
0
싫어요
채택취소하기

C에서

format_string(char *msg, ...)

이런식으로 가변인자만 있는 함수는 쓸 수가 없습니다.

'...' 파라메터가 나오기전에 이 가변인자들이 몇개인지 알려줘야하는 파라메터가 먼저 있어야 하기 때문입니다.

호출은 함수안에 msg만 넣어주면 되지만 이 함수는 가변인자가 몇개인지 알 수 있는 방법이 없으므로 format_string안에 인자가 몇개인지 알려주는 파라메터를 넣어줘야 합니다.

void format_string(int argc, char *msg, ...) 형태로 수정한 다음

format_string(strcnt(msg), msg); 

로 호출하면 됩니다.

이해가 잘 안가신다면 main함수의 인자가 왜 int argc, char** argv 인지 찾아보시면 도움이 될 겁니다

  • 2016년 02월 12일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close