Standard Argumente

Die stdarg beinhaltet die Funktionalität, um in C Funktionen mit einer beliebigen Anzahl von Argumenten zu erstellen. Die Argumente können entsprechend nicht benannt werden und haben entsprechend auch keinen bekannten Datentyp. Die Verwendung von Funktionen mit variabler Argumentenliste ist also durchaus als gefährlich einzustufen, allerdings sind sie auch praktisch, wie beispielsweise die Funktion printf() belegt.

Eine Funktion mit variabler Argumentenliste wird mit drei Punkten deklariert, zum Beispiel

int printf( char const * formatString, ... )

Um die zusätzlichen Argumente auszulesen, muss zunächst eine Argumenten-Liste (va_list (Datentyp)) initialisiert (va_start()) werden, anschließend können die Argumente ausgelesen werden (mit va_arg()) und vor verlassen der Funktion muss die Argumentenliste wieder freigegeben werden (va_end()).

Dynamische Speicherverwaltung

Datentyp Bedeutung
va_list (Datentyp) Beinhaltet die variablen Argumente als Liste

Funktionen (Makros)

Makro Bedeutung
va_start() Initialisiert die va_list (Datentyp) für diese Funktion
va_arg() Entnimmt der Liste ein Argument
va_end() Gibt die Argumentenliste frei



Diskussionsthread