c - 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 中相同。
谢谢
解决方案
在 C++ 中,这是std::apply但我想要在 C 中相同。
由于您在 C 中需要相同的内容,因此您肯定会接受必须满足相同的要求,特别是作为元组 支持std::get
和std::tuple_size
,它们的 C 等价物。现在,只要按从头到尾的顺序访问数组中的参数,std::get
就可以用 来实现va_…()
,但就像stdarg变量参数列表需要一些确定参数数量的方法(如格式字符串或参数计数),std::tuple_size
没有这种方法就无法实现。你不会不传递这些信息。
推荐阅读
- python - 如何在熊猫中只保持最快的骑行
- javascript - Vuetify 多个 v-select 所需规则不起作用
- jenkins - 如何限制 Jenkins Job-DSL 中所有作业的再生
- sql - SQL Server 先按字母排序,再按数字排序
- git - 如何从`.git`目录中确定主工作树
- maven - 使用 jetty-maven-plugin 跟踪请求和响应
- html - 如何在移动设备上将菜单移动到标题左侧
- java - 如何加快 valgrind 启动的 java 应用程序的执行速度?
- html - 为什么 display:inline-block 可以防止边距崩溃?
- forms - Spring Boot + Thymeleaf 下拉框验证在提交时重新填充输入文本字段