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函数那样调用compute
compute.apply(this, arr)
我正在用 C 实现一些库,这就是我需要它的原因。
在 C++ 中,这是 std::apply,但我希望在 C 中也是如此。
谢谢
In C++ this is std::apply but I want the same in C.
由于您想要在 C 中实现相同的要求,您肯定会接受必须满足相同的要求,特别是作为 元组 支持 std::get
和 std::tuple_size
,它们的 C 等价物。现在,只要按照从头到尾的顺序访问数组中的参数,std::get
就可以用 va_…()
实现,但就像 stdarg 变量一样参数列表需要一些方法来确定参数的数量(如格式字符串或参数计数),std::tuple_size
没有这种方法就无法实现。不传递这些信息你就不行。
我需要使用参数数组中的参数列表来评估函数,如本例所示:
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 中也是如此。
谢谢
In C++ this is std::apply but I want the same in C.
由于您想要在 C 中实现相同的要求,您肯定会接受必须满足相同的要求,特别是作为 元组 支持 std::get
和 std::tuple_size
,它们的 C 等价物。现在,只要按照从头到尾的顺序访问数组中的参数,std::get
就可以用 va_…()
实现,但就像 stdarg 变量一样参数列表需要一些方法来确定参数的数量(如格式字符串或参数计数),std::tuple_size
没有这种方法就无法实现。不传递这些信息你就不行。