Die Alternative wäre es, bei Verwendung dieses Compilers auf va_end zu
verzichten ... Portierbar und sauber ist das aber nicht.
Andere Compiler verwenden, je nach Architektur der Zielmaschine
wenigstens Code, der den der "Funktion" übergebenen Pointer
deinitialisieren (auf null setzen).
So macht's beispielsweise MSVC++ 6.0
#define va_end(ap) ap = (va_list)0
Und so macht's Rowley Crossworks (MSP430, aber wohl auch andere
#define va_end(ap) ((void)((ap) = (void *)0))
Was den armen Teufel geritten hat, der Deine stdarg.h/vararg.h
geschrieben hat, will ich besser gar nicht wissen.