假设我有一个接受可变数量参数的函数:我想从其他地方调用这个函数,构建参数列表,但事先不知道我需要多少个参数。
抱歉,没有很好地解释,希望这段代码能让我的问题更清楚:
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 常见问题解答列表中的问题 15.13:http://c-faq.com/varargs/invvarargs.html
另请参阅之前的 Stackoverflow 问题:
带有未知参数的 C 后期绑定
如何在 C 中通过传递多个参数的指针来调用函数?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)