假设我有一个接受可变数量参数的函数:我想从其他地方调用这个函数,构建参数列表,但事先不知道我需要多少个参数。
抱歉,没有很好地解释,希望这段代码能让我的问题更清楚:
void foo(int n, ...) {
va_list vl;
va_start(vl,n);
for (int i = 0; i<n; i++) {
// Do something to each passed variable
}
}
正在从这个函数调用该函数:
void bar(int howManyParams) {
// Here I want to call foo() with howManyParams parameters
// (values are irrelevant for the question)
//
// I.e. for howManyParams = 1, we should call foo(0)
// for howManyParams = 2, we should call foo(0,0)
// for howManyParams = 3, we should call foo(0,0,0)
// etc.
//
}
最佳答案
实际上在运行时构建一个可变长度的参数列表——我很确定你正在尝试这样做——非常棘手。在标准 C 中根本没有办法做到这一点,但是您可以尝试各种技巧。
也许最好的是 http://sourceware.org/libffi/ 的“外部函数接口(interface)库”。
另请参阅 C FAQ 列表中的问题 15.13:http://c-faq.com/varargs/invvarargs.html
另请参阅之前的 Stackoverflow 问题:
C late binding with unknown arguments
How to call functions by their pointers passing multiple arguments in C?
关于c++ - 使用未知数量的参数调用可变参数函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35093317/