的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
似乎有點奇怪,你一方面允許可變數量的參數,但無論如何你知道參數類型是什麼 - 它有點挫敗目的,並使代碼更難以維護和錯誤處理將是粗糙的。 –