The definition of va_start
is also implementation dependent, but the
effect is as though the following were written in the definition of
construct_trade
:
Cast to neutral Increment needed to pointer type move pointer to first | optional argument v | ------ v ((void) argument_pointer ---------------------- = (char*) &argument_count + sizeof(argument_count)) ------- --------------- ^ ^ | | | *-- Address of final ordinary argument | *-- Cast to argument_pointer type, char, to which a byte count can be added meaningfully
The final cast to void
is useful only if the va_start
expression is embedded in a larger expression.