The va_end macro facilitates a normal return from the function whose variable argument list was referred to by the expansion of va_start that initialized the va_list ap. The va_end macro may modify ap so that it is no longer usable (without intervening invocation of va_start). If there is no corresponding invocation of the va_start macro, or if the va_end macro is not invoked bore the return, the behavior is undefined.