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

발생하는 문제 및 실행환경

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

소스코드

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

void debug_print(int dbg_lvl, char * msg, ...) {
    format_string(msg, ...);/* ...에서 받은 인자를 다 넘겨주려면..? */
    fprintf(stdout, msg);
 }

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 인지 찾아보시면 도움이 될 겁니다

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.