C执行带有参数列表的函数

时间:2019-10-15 06:25:02

标签: c arguments apply variadic-functions

我需要使用参数数组中的参数列表来评估函数,如本例所示:

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中也是如此。

谢谢

1 个答案:

答案 0 :(得分:1)

  

在C ++中,这是std::apply,但我希望在C中也是如此。

由于您想要在C中使用相同的语言,因此您肯定会接受必须满足相同的要求,尤其是因为 tuple 支持{ {1}}和std::get ,它们是C等效项。现在,只要按从头到尾的顺序访问数组中的参数,就可以用std::tuple_size实现std::get,但是就像 stdarg 变量参数列表一样某些确定参数数量的方法(例如格式字符串或参数计数),va_…()无法实现。您必须传递这些信息。