C语言:传递可变参数

void g(...);
void f(...){g(...);}
f("%s %d","hello",2011);
//需求:函数g,f都支持可变参数,外部调用函数f,函数f把自己的参数传递给g

 

#define FUNC(format,...) g(format,__VA_ARGS__)

//方案1:将f实现为一个宏(但是这种方法不够灵活)

 

void g(char ** format,va_list *args)
{
va_start(*args, *format);
}

void f(char *format, ...)
{
va_list args;
g(&format,&args);
}

f("%s %d","hello",2011);

/*
方案2
f必须将整&format传递给g,因为g拿到args不是为了指向自己的参数列表,而是为了指向f的参数列表,这样就等于f把自己的参数传递给g
*/



你可能感兴趣的:(可变参数)