Home Segments Index Top Previous Next

622: Mainline

You fetch each argument, and move the argument pointer to the next argument, by deploying yet another macro, va_arg. The va_arg macro takes as its first argument the function's argument pointer. The va_arg macro takes as its second argument the type of the argument to be fetched, which va_arg needs so that it can properly move the argument pointer. For example, to fetch the first of the optional arguments supplied to construct_trade, which is of type double, you write the following:

va_arg (argument_pointer, double); 

To fetch the second of the optional arguments, which is of type int, you write a similar statement, but with int instead of double:

va_arg (argument_pointer, int); 

Finally, once all arguments are read, you clean up using va_end with the argument pointer as the sole argument:

va_end (argument_pointer);