Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

va_arg - variable Argumentliste abarbeiten

&pagelevel(4)&pagelevel

Definition

#include <stdarg.h>

Optional
#include <varargs.h> (Ende)

type va_arg(va_list ap, type);

Beschreibung

Die Makros va_arg, va_start und va_end erlauben es, portable Prozeduren mit variablen Argumentlisten, wie sie in stdarg.h definiert sind, zu schreiben. Sie dienen zur Bearbeitung einer Argumentliste, deren Anzahl und Typ bei jedem Funktionsaufruf variieren kann.

va_arg liefert Datentyp und Wert des jeweils nächsten Arguments der variablen Argumentliste ap, beginnend mit dem ersten Argument. Technisch gesehen expandiert das Makro zu einem Ausdruck von Datentyp und Wert des Arguments.

Vor dem ersten Aufruf von va_arg muss die variable Argumentliste, auf die ap zeigt, mit va_start initialisiert worden sein. Jeder va_arg-Aufruf verändert ap so, dass der Wert des jeweils nächsten Arguments zur Verfügung steht.

ap ist ein Zeiger auf die Argumentliste, die vor dem ersten Aufruf von va_arg mit va_start initialisiert wurde.

type ist ein 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 type ist durch ein einfaches Anfügen von * an type definiert. Unzulässig sind z.B. Vektor- und Funktionstypen.

Falls es kein nächstes Argument gibt oder type nicht zum aktuellen Argument passt, ist das Verhalten undefiniert.

Returnwert

Wert des ersten Arguments

wenn va_arg() das erste Mal nach va_start aufgerufen wurde. Dieses Argument liegt hinter dem letzten „benannten“ Argument parmN in der Formalparameterliste (siehe va_start()). Darauf folgende Aufrufe liefern sukzessive die restlichen Argumentwerte.

Hinweise

Die Kompatibilität von Argumenttypen wird vom C-Laufzeitsystem dahingehend unterstützt, dass ähnliche Typen in derselben Weise in der Parameterliste abgelegt werden und zwar: Alle unsigned-Typen (inkl. char) werden wie unsigned int dargestellt (rechtsbündig in einem Wort). Alle anderen ganzzahligen Typen werden wie int dargestellt (rechtsbündig in einem Wort). float wird wie double dargestellt (rechtsbündig in einem Doppelwort).

Vor der Rückkehr einer Funktion, deren Argumentliste mit va_arg abgearbeitet wurde, muss va_end aufgerufen werden.

Siehe auch

va_start(), va_end(), stdarg.h, varargs.h.