void va_end(va_list ap);
Each invocation of va_start() must be matched by a corresponding invocation of va_end() in the same function. After the call va_end(ap) the variable ap is undefined. Multiple traversals of the list, each bracketed by va_start() and va_end() are possible. va_end() may be a macro or a function.
The va_start(), va_arg(), and va_end() macros conform to C89. C99 defines the va_copy() macro.