The va_start macro shall be invoked before any access to the unnamed arguments.
The va_start macro initializes ap for subsequent use by va_arg and va_end.
The parameter paramN is the identifier of the rightmost parameter in the variable parameter list in the function definition (the one just before the , ...). If the parameter paramN is declared with the register storage class, with a function or array type, or with a type that is not compatible with the type that results after application of the default argument promotions, the behavior is undefined.