我試圖使用va_arg在我的GUI庫中創建一個通用工廠函數。 當路過的va_arg兩次他們傳遞相同的值,而不是兩個不同的相同的功能:將va_arg傳遞給函數導致相同的值
GUIObject* factory(enumGUIType type, GUIObject* parent, ...){
va_list vl;
va_start(vl, parent);
...
label->SetPosition(va_arg(vl, int), va_arg(vl, int));
va_end(vl);
return finalObjectPointer;
}
factory(LABEL, theParent, 100,200); // Results in position 200:200
是什麼原因導致這一意外的行爲?
使用va_arg函數更多的是一個實驗,我可能不會在我的GUI庫中使用它,但是知道是什麼原因會很有趣。 – Zoomulator 2009-12-28 01:37:49