如何将可变数量的参数从一个函数传递到另一个函数?

Zai*_*zvi 4 c++ variadic-functions

有没有办法直接将可变数量的参数从一个函数传递给另一个函数?

我想实现如下的最小解决方案:

int func1(string param1, ...){
  int status = STATUS_1;
  func2(status, param1, ...);
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用类似下面的内容来完成此操作,但是这段代码将被重复多次,所以我希望尽可能保持简约,同时保持函数调用非常短

int func1(string param1, ...){
  int status = STATUS_1;
  va_list args;
  va_start(args, param1);
  func2(status, param1, args);
  va_end(args);
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

nos*_*nos 7

不,你必须va_list按照你的第二个例子传递varargs .

它只是3行额外的代码,如果你想避免重复这些行,并且func2总是相同的,或者至少采用相同的参数,从中制作一个宏.

#define CALL_MY_VA_FUNC(func,param) do {\
        va_list args; \
        va_start(args,param);\
        func(param,param,args);\
        va_end(args); } while(0)
Run Code Online (Sandbox Code Playgroud)