C 使用参数列表执行函数

C execute function with list of arguments

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

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函数那样调用computecompute.apply(this, arr)

我正在用 C 实现一些库,这就是我需要它的原因。

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

谢谢

In C++ this is std::apply but I want the same in C.

由于您想要在 C 中实现相同的要求,您肯定会接受必须满足相同的要求,特别是作为 元组 支持 std::getstd::tuple_size,它们的 C 等价物。现在,只要按照从头到尾的顺序访问数组中的参数,std::get 就可以用 va_…() 实现,但就像 stdarg 变量一样参数列表需要一些方法来确定参数的数量(如格式字符串或参数计数),std::tuple_size 没有这种方法就无法实现。不传递这些信息你就不行。