source

C 프로그래밍:전달 변수 인수 목록

nicesource 2022. 12. 24. 17:23
반응형

C 프로그래밍:전달 변수 인수 목록

printf와 같은 변수 개수를 받아들여 몇 가지 작업을 한 다음 변수 목록을 printf로 전달하는 함수를 작성하려고 합니다.스택에 밀어 넣어야 할 것 같아서 어떻게 해야 할지 모르겠어요.

대략 이런 거

http://pastie.org/694844

#include <stdio.h>
#include <stdarg.h>

void forward_args( const char *format , ... ){
  va_list arglist;
  printf( format, arglist );
}


int main (int argc, char const *argv[]){
  forward_args( "%s %s\n" , "hello" , "world" );  return 0;
}

좋은 생각 있어요?

결과 전달 안 함printf에 전달하다vprintf.vprintf통과를 처리하기 위해 특별히 존재하는va_list논쟁들.Linux man 페이지에서 다음 작업을 수행합니다.

#include <stdio.h>

int printf(const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);
int sprintf(char *str, const char *format, ...);
int snprintf(char *str, size_t size, const char *format, ...);

#include <stdarg.h>

int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);

후자가 어떤 식으로 명시적으로va_list함수 내에서 선언하는 인수와 같은 인수...파라미터 리스트에서 참조해 주세요.따라서 함수는 다음과 같이 선언됩니다.

void forward_args( const char *format , ... ){
   va_list arglist;
   va_start( arglist, format );
   vprintf( format, arglist );
   va_end( arglist );
}

당신이 찾고 있는 건 분명해요va_start()/vprintf()/vsnprintf()/va_end()직접 구현할 필요가 없습니다.

arglist 값을 사용하도록 설계된 함수에 전달합니다.자세한 내용은 stdarg 및 vprintf 설명서를 참조하십시오.

언급URL : https://stackoverflow.com/questions/1719784/c-programming-forward-variable-argument-list

반응형