我想实现一个函数,它接受一个函数及其参数,然后调用它。 我进行了很多搜索,但无法用可变参数函数来实现它。 我想要一种在调用单元测试函数后记录 stdio 的干净方法。
即使您想建议另一种录制stdio的方法,请帮我解决原来的问题。
类似这样的东西,但是有效。
void
foo(void (*function)(...), ...) {
va_list args;
va_start(args, function);
// This line is just to explain what i want
function(args);
va_end(args);
}
void
bar(int a, char *b) {
printf("a = %d, b = %s\n", a, b);
}
int
main() {
foo(bar, 2, "hello");
return 0;
}
上面的代码......................
它并不像你想象的那样工作。您需要将
va_list
传递给函数。
void foo(void (*function)(va_list), ...) {
va_list args;
va_start(args, function);
function(args);
va_end(args);
}
void bar(va_list list)
{
int a = va_arg(list, int);
char *b = va_arg(list, char *);
printf("a = %d, b = %s\n", a, b);
}
int main(void) {
foo(bar, 2, "hello");
}