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
*/



相关文章:

  • 2021-05-27
  • 2022-01-07
  • 2022-02-15
  • 2021-12-09
  • 2021-07-30
  • 2021-09-19
  • 2021-07-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-10-28
  • 2021-09-10
  • 2021-10-10
相关资源
相似解决方案