【发布时间】:2017-05-15 09:36:46
【问题描述】:
是否可以将一个函数的参数列表转移到另一个函数?
例如,在我的函数 A 中,我想使用可变参数列表中的参数调用我的函数 B/函数 C(取决于执行状态)。请注意,我无法更改 functionB/functionC 声明。
int functionA(int a, ...){
...
va_list listPointer;
va_start( listPointer, a);
...
}
int functionB(long b, long c, long d){
...
...
}
int functionC(long b, int c, int d){
...
...
}
对于这个项目,我使用 gcc 4.9.1。
到目前为止,我尝试的是从 listPointer 传递 void* 但它没有用...
从 va_list 中提取变量也不起作用,因为我有 80 个其他类似的函数应该从 functionA 调用,这意味着我无法提取参数并通过提取的值调用。
也许有一种方法可以复制 functionA 参数的内存并使用指向它的指针调用 functionB/functionC?有谁知道这怎么可能?
【问题讨论】:
-
在函数
functionA中从va_list listPointer中读取它们,然后将它们按值传递给functionB。还是出于某种原因不是故意的? -
@StephanLechner 是的,原因在于,根据逻辑,我的 functionA 还可能调用具有不同参数类型的其他函数......这就是为什么显式提取参数不起作用......我会将其添加到我的问题中
-
如果你想使用可变参数模板而不是 C 风格的可变参数函数,这很容易 ..
-
@M.M 抱歉,我的 c++ 不太好……你能给我一些关于这种方法的更多信息,甚至是一个简单的例子吗?