Definition | #include <stdarg.h> <typ> va_arg(va_list arg_zg, <typ>); Das Makro Das Makro Vor dem ersten Aufruf von | |
Parameter | va_list arg_zg Zeiger auf die Argumentenliste, die vor dem ersten Aufruf von <typ> Typname, der zum Typ des aktuellen Argumentes passt. Es sind alle C-Datentypen zulässig, für die gilt: Ein Zeiger auf ein Objekt vom Typ typ ist durch ein einfaches Anhängen von * an typ definiert. Unzulässig sind z.B. Array- und Funktionstypen. | |
Returnwert | Wert des Arguments | |
Der erste Aufruf nach dem Aufruf von | ||
| undefiniert | Falls es kein nächstes Argument gibt oder <typ> nicht zum aktuellen Argument passt. |
Hinweise | Die Kompatibilität von Argumenttypen wird vom C-Laufzeitsystem dahingehend unterstützt, dass ähnliche Typen in der selben Weise in der Parameterliste abgelegt werden, und zwar: | |
Beispiel | Die Funktion f1 füllt ein Array mit einer Liste von Argumenten, die vom Typ Zeiger auf Zeichenkette sind. Dabei sollen nicht mehr als MAXARGS Argumente verarbeitet werden. Die Anzahl der Zeigerargumente wird als erstes Argument für f1 definiert. Das aufgefüllte Array wird anschließend einer Funktion f2 übergeben. #include <stdarg.h> #include <stdio.h> #define MAXARGS 20 extern int f2(int i, char *a[]); void f1(int n_ptrs, ...) { va_list ap; char *array[MAXARGS]; int ptr_no = 0; if (n_ptrs > MAXARGS) n_ptrs = MAXARGS; va_start(ap, n_ptrs); while (ptr_no < n_ptrs) array[ptr_no++] = va_arg(ap, char *); va_end(ap); f2(n_ptrs, array); return 0; } | |
Siehe auch | va_start, va_end |