首页 > 解决方案 > C用参数列表执行函数

问题描述

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

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};

我需要compute像JS函数一样调用compute.apply(this, arr)

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

在 C++ 中,这是std::apply但我想要在 C 中相同。

谢谢

标签: cargumentsapplyvariadic-functions

解决方案


在 C++ 中,这是std::apply但我想要在 C 中相同。

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


推荐阅读