Atari Logo
Atari Computer

Hauptseite -
Welches System? -
Hardware -
Software -
Emulatoren -
Internet
MausNet
Programmieren
Verweise
Über

C

Home Die ANSI Bibliotheken assert.h setjmp.h

13.7 stdarg.h

In dieser Datei sind Funktionen für die Behandlung von variablen Parameterlisten, wie sie z.B. dir printf Funktion benutzt, definiert.

void va_start(va_list ap, parmN)
Mit dem Makro va_start initalisiert man die Bearbeitung. Dazu übergibt man eine Variable vom Typ va_list, die dazu dient, die Parameter der Reihe nach abzuarbeiten, und den letzten Parameter, der einen Namen trägt.
 
#define va_arg(ap, type) (*((type *)(ap))++)
Das Makro va_arg bekommt die Variable vom Typ va_list und den Datentyp des nächsten Parameters und liefert den Parameter. Durch eine Folge von va_arg Aufrufen kann man der Reihe nach jeden Parameter abarbeiten.
 
#define va_end(ap)
Sind alle Parameter abgearbeitet worden, muß vor Verlassen der Funktion dieses Makro aufgerufen werden.
 

Um mit variablen Parameterlisten sinnvoll umzugehen, muß die Funktion erkennen können, welche Parameter folgen. Bei den formatierten Ausgaben (printf...) erfolgt dies durch die Platzhalter im Formatstring.

void Test(int x,...)
{
   va_list ap;
   int i;

   puts("va_arg - Test");
   va_start(ap, x);
   for (i = 0; i < x; i++)
   {
      printf("Parameter %d hat den Wert %d\n", i, va_arg(ap,int) + 2);
   }
}

int main(void)
{
   Test(1,34);
   Test(3,34,42,65);
}

Home Die ANSI Bibliotheken assert.h setjmp.h


Best viewed with any browser English version not yet available.

Änderungen und Irrtümer vorbehalten. Letzte Änderung:
14 September 2001.
Home - Mail an den Webmaster - Impressum