stdarg ist für so was ähnliches gedacht, es wird zb. für funktionen wie
verwendet, das "..." ist kein auslassungszeichen, sondern valide C-syntax, eben für "variable argumente".Code:int printf(const char *format, ...);
dh du mußt, um die variablen argumente abzuarbeiten, mit va_start, va_arg, va_end hantieren, und du müßtest einen weg finden, die variablen argumente aus deiner aufrufenden funktion wiederum varargs-mäßig verpacken, da fällt mir jetzt kein standard-weg ein dafür.
wie wärs mit einer anderen lösung, du übergibst die argumente einfach als array oder verkettete liste:
(natürlich ungetestet).Code:struct arglist { int value; struct arglist *next; }; void func_add(struct arglist *args) { int result = 0; for(; arglist; arglist = arglist->next) result += arglist->value; // irgendwas mit result machen } void main(void) { struct arglist a1, a2, a3; a1.value = 1; a1.next = a2; a2.value = 2; a2.next = a3; a3.value = 3; a3.next = NULL; func_add(&a1); }
du mußt ja bei deinem parser sowieso die argumente in irgendwelchen datenstrukturen unterbringen, dann kannst du das gleich so designen, daß es zusammenpasst.
HTH,
cm.







Zitieren

Lesezeichen