我需要使用参数数组中的参数列表来评估函数,如本例所示:
int compute(...) {
int n;
va_list params;
va_start(params, n);
// some custom computation with no "va" output
va_end(params);
}
还有一些int数组(这是动态数组,不依赖于固定大小):
int arr[10] = {0, 1, 3, 7, 8, 1, 3, 5, 7, 9};
我需要像JS函数compute
一样调用compute.apply(this, arr)
我正在用C实现一些库,这就是我需要它的原因。
在C ++中,这是std::apply,但我希望在C中也是如此。
谢谢
答案 0 :(得分:1)
在C ++中,这是std::apply,但我希望在C中也是如此。
由于您想要在C中使用相同的语言,因此您肯定会接受必须满足相同的要求,尤其是因为 tuple 支持{ {1}}和std::get
,它们是C等效项。现在,只要按从头到尾的顺序访问数组中的参数,就可以用std::tuple_size
实现std::get
,但是就像 stdarg 变量参数列表一样某些确定参数数量的方法(例如格式字符串或参数计数),va_…()
无法实现。您必须传递这些信息。