的ARGS在其接收各种类型的参数的函数,我已经使用的可变参数, ,我的所有参数的一种类型的解码,如下在C可变参数,是否有可能发送不同类型
va_start (ap, argCount);
for (u4Index = 0; u4Index < argCount; u4Index++)
{
ai4Arg[u4Index] = va_arg (ap, int);
}
va_end (ap);
switch (Opt)
{
case 1:
func1((int) ai4Arg[0],
(int *) ai4Arg[1]);
break;
case 2:
func2((char *) ai4Arg[0],
(int *) ai4Arg[1]);
break;
}
然后我将类型参数转换为类型。在尝试从INT4向一个指针强制转换参数时,我这样做,我得到了下面的警告 “强制转换为不同大小的整数指针[-Wint-to-pointer-cast]”。 超出了使用可变参数的方式。
部分是,您可以传递不同的类型,例如,如果前N个参数的类型相同,并且所有下一个参数都是另一个类型。您需要知道类型的顺序,以正确检索它们 – mangusta
,或者您正在询问有关情况,当您传递所有相同类型时,并且您只是想根据某些“Opt”在函数内部以不同方式查看它们? – mangusta
似乎有点奇怪,你一方面允许可变数量的参数,但无论如何你知道参数类型是什么 - 它有点挫败目的,并使代码更难以维护和错误处理将是粗糙的。 –