{{keywords>wiki library source code example reference}} void va_start(va_list ap, argN); === description === The va_start() macro initializes ap for subsequent use by va_arg() and va_end(), and must be called first. The argument last is the name of the last argument before the variable argument list, that is, the last argument of which the calling function knows the type. Because the address of this argument may be used in the va_start() macro, it should not be declared as a register variable, or as a function or an array type. The [[c:stdarg.h:va_start|va_start()]], [[c:stdarg.h:va_arg|va_arg()]], and [[c:stdarg.h:va_end|va_end()]] macros conform to C89. C99 defines the [[c:stdarg.h:va_copy|va_copy()]] macro.