vvaa_ssttaarrtt() -- Variable Arguments

Point to beginning of argument list
#iinncclluuddee <vvaarraarrggss.hh>
vvooiidd vvaa_ssttaarrtt(_l_i_s_t_p_t_r)
vvaa_lliisstt _l_i_s_t_p_t_r;

#iinncclluuddee <ssttddaarrgg.hh>
vvooiidd vvaa_ssttaarrtt(_l_i_s_t_p_t_r, _r_i_g_h_t_p_a_r_m)
vvaa_lliisstt _l_i_s_t_p_t_r, _t_y_p_e _r_i_g_h_t_p_a_r_m;

vvaa_ssttaarrtt() is a macro that points  to the beginning of a list of arguments.
It can  be used with  functions that take  a variable number  of arguments,
such as pprriinnttff() or ssccaannff(), to help implement them portably.  It is always
used  with  vvaa_aarrgg() and  vvaa_eenndd()  from  within a  function  that takes  a
variable number of arguments.

This  macro  is  defined in  two  different  header  files, <ssttddaarrgg.hh>  and
<vvaarraarrggss.hh>.  The  former  header  file  is  the creation  of  the  ANSI  C
committee,  whereas the  latter  originates with  UNIX System  V.  In  both
implementations, the first argument is _l_i_s_t_p_t_r, which is of type vvaa_lliisstt.

The implementation in  <ssttddaarrgg.hh> (ANSI) adds a second argument, _r_i_g_h_t_p_a_r_m,
which is  the rightmost parameter  preceding the variable  arguments in the
function's  parameter  list.   Undefined behavior  results  if  any of  the
following conditions apply to  _r_i_g_h_t_p_a_r_m: if it has storage class rreeggiisstteerr;
if  it has  a  function type  or  an array  type;  or if  its  type is  not
compatible with the type that results from the default argument promotions.

_E_x_a_m_p_l_e
For an example of this macro, see the entry for ssttddaarrgg.hh.

_S_e_e _A_l_s_o
ssttddaarrgg.hh, vvaarraarrggss.hh
ANSI Standard, section 7.8.1.1

_N_o_t_e_s
For a  discussion of how the <ssttddaarrgg.hh>  and <vvaarraarrggss.hh> implementations of
the variable-argument routines differ, ssttddaarrgg.hh.

The ANSI  Standard demands that vvaa_ssttaarrtt() be implemented  only as a macro.
If the  macro definition of vvaa_ssttaarrtt() is suppressed  within a program, the
behavior is undefined (and probably unwelcome).
