我正在尝试使用 va_arg 在我的 GUI 库中创建一个通用工厂函数。当在同一个函数中传递 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
是什么导致了这种意外行为?