我有两个可变函数作为 foo(format, ...)
和 bar(format, ...)
。我想实现函数 foo
以便它可以使用相同的参数列表调用 bar
。也就是说,
foo(format...)
{
...
bar(format, ...);
}
例如,调用 foo("(ii)", 1, 2)
将调用具有相同参数的 bar
bar("(ii)", 1, 2)
。这个foo
函数应该怎么实现呢?
PS:bar
函数来自旧版库,我无法更改其界面。
最佳答案
这是不可能的,只要你拥有的只是一堆带有 ...
参数的 if 函数。
你必须提前计划这样的事情,并以两阶段的方式实现每个可变参数函数
void vfoo(format, va_list *args) {
/* Process `*args` */
}
void foo(format, ...) {
va_list args;
va_start(args, format);
vfoo(format, &args);
va_end(args);
}
通过一对 va_list *
函数和 ...
函数实现每个可变参数函数后,您可以使用 va_list 委托(delegate)调用*
函数的版本
void vfoo(format, va_list *args) {
...
vbar(format, args);
...
}
关于c++ - 使用另一个可变参数函数的未命名参数调用可变参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383642/