Tag: adapter

使用var_arg传递函数调用的参数

我正在编写一个适配器来组合两个API(一个在C中,另一个在C ++中)。 如果在一个API上调用一个函数,我需要将调用者ID和函数的参数传递给适配器,并在传递此信息的情况下调用相应的函数。 现在显然它们无法直接映射,因为一个接口需要C ++编译,名称修改会使另一个接通,所以这就是我首先使用一组适配器的原因。 由于参数的数量不同,我查找了可变参数函数,并发现这个想法非常有用,但是我只在POD上运行,并且必须处理每个调用的结构,枚举和许多不同的参数,这可能需要放回去在将其提供给目标函数之前进入结构体。 我偶然发现的每个例子都比较简单,主要涉及算术操作,例如总结,查找最大数字或打印。 主要使用var_list上的for循环完成。 也许我陷入了这个想法,它根本不起作用,但我只是好奇…… 假设我想将列表中的参数分配给我的目标函数参数(传递的参数的顺序是正确的),这会是一个好方法吗? BOOL Some_Function( /* in */ CallerId *pObjectId, /* in */ someDataType argument1 ) { BOOL ret = Adapter_Call(pFunction, pObjectId, argument1); return ret; } 所以一旦我把它做成了正确的适配器,我想做 BOOL Adapter_Call(*pFunction, *pObjectId, argument1, …) { va_list args; va_start(args, argument1); /*go over list and do `var_list[i] = pFunctionArgList[i]` which is of […]