va_end ist in der stdarg
definiert, die in C über stdarg.h
, bzw in C++ über cstdarg
eingebunden wird.
va_end() gibt eine Argumenten-Liste (va_list) wieder frei.
#include <stdarg.h> void va_end( va_list list );
list: Die freizugebende Liste
Eine mit va_start() initialisierte Liste muss mit va_end() wieder freigegeben werden, bevor die Funktion verlassen wird. Hierauf ist zu achten, insbesondere, wenn die Funktion mehrere Ausgänge besitzt.
#include <stdio.h> #include <stdarg.h> int add( int first, ... ) { va_list list; va_start( list, first ); int result = first; int temp; do { temp = va_arg( list, int ); result += temp; } while( temp > 0 ); va_end( list ); return result; } int main (void) { printf( "Ergebnis: %d\n", add( 1, 2, 3, 4, 5, 0 ) ); return 0; }