【发布时间】:2016-02-01 13:35:35
【问题描述】:
我正在尝试实现这样的目标:
void sum(int a, int b){ printf("result: %d", a+b); }
void callFunc(void (*funct)(...), ...)
{
va_list ars;
va_start(ars, funct);
funct(ars);
va_end(ars);
}
int main()
{
callFunc(sum, 2,3);
return 0;
}
但这不起作用,因为需要两个va_lists,用于funct 参数和传递的参数。但是,即使我尝试传递 sum 函数,它也会显示:error: invalid conversion from 'void (*)(int, int)' to 'void (*)(...)'
那么如何使这项工作在旧的 C 风格中发挥作用?
【问题讨论】:
-
如果你想把它保留为 C,为什么要标记这个 C++?
标签: c function pointers parameters