c – 使用未知数量的参数调用可变参数函数
作者:互联网
假设我有一个带有可变数量参数的函数:我想从其他地方调用这个函数,构建参数列表,但事先不知道我需要多少个参数.
对不起,没有得到很好的解释,希望这段代码能让我的问题更加清晰:
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/的“外部函数接口库”.
另见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-3,c,variadic-functions 来源: https://codeday.me/bug/20190829/1760500.html