반응형
C 프로그래밍:전달 변수 인수 목록
printf와 같은 변수 개수를 받아들여 몇 가지 작업을 한 다음 변수 목록을 printf로 전달하는 함수를 작성하려고 합니다.스택에 밀어 넣어야 할 것 같아서 어떻게 해야 할지 모르겠어요.
대략 이런 거
#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
반응형
'source' 카테고리의 다른 글
데이터베이스 사용자도 mysql, information_schema 및 performance_schema 테이블에 액세스할 수 있어야 합니까? (0) | 2023.01.08 |
---|---|
Composer를 사용하지 않고 Composer PHP 패키지를 설치하려면 어떻게 해야 합니까? (0) | 2023.01.08 |
열 수가 다른 두 표를 결합합니다. (0) | 2022.12.24 |
일부 테이블 조건에서 MySQL/MariaDB 쿼리가 느릴 수 있습니다. (0) | 2022.12.24 |
잘못된 바이트 수 길이로 인해 손상된 직렬화된 문자열을 복구하려면 어떻게 해야 합니까? (0) | 2022.12.24 |