====== 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 [[c:lib:stdio: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]]) 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]] | Beinhaltet die variablen Argumente als Liste | ===== Funktionen (Makros) ===== ^ Makro ^ Bedeutung ^ | [[va_start]] | Initialisiert die [[va_list]] für diese Funktion | | [[va_arg]] | Entnimmt der Liste ein Argument | | [[va_end]] | Gibt die Argumentenliste frei | \\ ---- [[http://www.forum.proggen.org/viewtopic.php?f=39&t=3081|Diskussionsthread]]