-3
我有一个C函数,它的自定义结构和具有不同类型(整型/串/其他自定义结构...)参数的可变的量。由于结构,函数可以确定每个参数的类型,以便处理它。传递变量参数的函数
void doStuff(MyStruct *S,...){ <function code> }
现在我需要另一个函数,可以传递'n'个常量参数到“doStuff”。即是这样的:
void useDoStuff(Mystruct *S, int n){ //lets say n=4
va_list arguments;
int i;
for(i = 0 ; i < n ; i++){
if(i%2) arguments.add(6); //example condition for the arguments
else arguments.add("Hello");
}
doStuff(S, arguments); // doStuff(S, "Hello", 6, "Hello", 6);
}
当然,这不会工作,因为va_list的不能这样使用(它只能用于粗略“可视化”所需要的)。不幸的是,结构和“doStuff”功能都无法更改,我需要找到解决方法。这种解决方法是否存在?
这不是C,它是C++(C没有明确提及)。这是一个XY问题。你为什么试图创建一个异构的参数列表? “doStuff”的_actual_定义是什么? – Tim
是的你是正确的没有在C中的引用(不知道为什么我用它们而不是示例中的指针)。无论如何,doStuff做什么并不重要,关键是我必须传递未知数量的常量参数来通过某些条件。 –
Quote:“自然这不会工作,因为va_list不能像这样使用(仅用于大致'可视化'需要)”。我的意思是... va_list是否具有“添加”功能? - 没有。 –