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 va_start(), va_arg(), and va_end() macros conform to C89. C99 defines the va_copy() macro.