小编典典

传递可变数量的参数

all

假设我有一个 C 函数,它接受可变数量的参数:我如何调用另一个函数,它期望从它内部获得可变数量的参数,并将所有参数传递给第一个函数?

例子:

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

void debug_print(int dbg_lvl, char *fmt, ...) {
    format_string(fmt, /* how do I pass all the arguments from '...'? */);
    fprintf(stdout, fmt);
 }

阅读 93

收藏
2022-04-01

共1个答案

小编典典

要传递省略号,您va_list像往常一样初始化 a 并将其传递给您的第二个函数。你不使用va_arg(). 具体来说;

void format_string(char *fmt,va_list argptr, char *formatted_string);


void debug_print(int dbg_lvl, char *fmt, ...) 
{    
 char formatted_string[MAX_FMT_SIZE];

 va_list argptr;
 va_start(argptr,fmt);
 format_string(fmt, argptr, formatted_string);
 va_end(argptr);
 fprintf(stdout, "%s",formatted_string);
}
2022-04-01