stdarg ist für so was ähnliches gedacht, es wird zb. für funktionen wie
Code:
int printf(const char *format, ...);
verwendet, das "..." ist kein auslassungszeichen, sondern valide C-syntax, eben für "variable argumente".
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:
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);
}
(natürlich ungetestet).
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.
Lesezeichen