P
supertux schrieb:
das hab ich mehrmals gesagt, weil va_end die Variablen und Speicher aufräumt, damit va_start das nächste Mal auch richtig startet. Wenn du genauer wissen willst, schau dir den Code von stdarg.h oder mach's hardcore mäßig und untersuch den Code von gibc.
...
ich würde es nicht tun, weil dir va_* Makros sind und da weißt du nicht, wie sie die Argumente behandeln, es könnte auch sos ein, dass der Code nachher nicht mehr kompilierbar ist.
Hab' ich mir jetzt angesehen - va_end setzt das PP-Argument AP auf 0, va_start setzt es aber sowieso neu. Störend wird Einstreuen von va_end also nur, wenn man einzeln auf die Argumente zugreifen will. Damit wird auch klar, daß das alles beim Compilieren passiert, man sich die Initialisierung einer Argumentliste beim Handling eines gespeicherten Argumentpointers sparen soll und nur die Gültigkeit der übergebenen Variablen zu beachten ist.
Gut, jetzt haben wir's ja
Danke zwar, aber die Müll- Sprüche wären nicht nötig gewesen ...