-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是否具有「添加」功能? - 沒有。 –