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
*/
浙公网安备 33010602011771号