Artifact be4f014336a8692ca9fa11814c467499d40320df:


0000: 3c 48 45 41 44 3e 0a 3c 54 49 54 4c 45 3e 20 56  <HEAD>.<TITLE> V
0010: 41 43 41 4c 4c 20 6d 61 6e 75 61 6c 20 70 61 67  ACALL manual pag
0020: 65 20 3c 2f 54 49 54 4c 45 3e 0a 3c 2f 48 45 41  e </TITLE>.</HEA
0030: 44 3e 0a 3c 42 4f 44 59 3e 0a 3c 48 31 3e 56 41  D>.<BODY>.<H1>VA
0040: 43 41 4c 4c 20 6d 61 6e 75 61 6c 20 70 61 67 65  CALL manual page
0050: 3c 2f 48 31 3e 0a 0a 3c 55 4c 3e 0a 3c 4c 49 3e  </H1>..<UL>.<LI>
0060: 20 3c 41 20 48 52 45 46 3d 22 23 4e 61 6d 65 22   <A HREF="#Name"
0070: 3e 4e 61 6d 65 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c  >Name</A>.<LI> <
0080: 41 20 48 52 45 46 3d 22 23 53 79 6e 6f 70 73 69  A HREF="#Synopsi
0090: 73 22 3e 53 79 6e 6f 70 73 69 73 3c 2f 41 3e 0a  s">Synopsis</A>.
00a0: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 44  <LI> <A HREF="#D
00b0: 65 73 63 72 69 70 74 69 6f 6e 22 3e 44 65 73 63  escription">Desc
00c0: 72 69 70 74 69 6f 6e 3c 2f 41 3e 0a 3c 4c 49 3e  ription</A>.<LI>
00d0: 20 3c 41 20 48 52 45 46 3d 22 23 4e 6f 74 65 73   <A HREF="#Notes
00e0: 22 3e 4e 6f 74 65 73 3c 2f 41 3e 0a 3c 4c 49 3e  ">Notes</A>.<LI>
00f0: 20 3c 41 20 48 52 45 46 3d 22 23 45 78 61 6d 70   <A HREF="#Examp
0100: 6c 65 22 3e 45 78 61 6d 70 6c 65 3c 2f 41 3e 0a  le">Example</A>.
0110: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 53  <LI> <A HREF="#S
0120: 65 65 20 61 6c 73 6f 22 3e 53 65 65 20 61 6c 73  ee also">See als
0130: 6f 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52  o</A>.<LI> <A HR
0140: 45 46 3d 22 23 42 75 67 73 22 3e 42 75 67 73 3c  EF="#Bugs">Bugs<
0150: 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 45 46  /A>.<LI> <A HREF
0160: 3d 22 23 50 6f 72 74 69 6e 67 22 3e 50 6f 72 74  ="#Porting">Port
0170: 69 6e 67 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20  ing</A>.<LI> <A 
0180: 48 52 45 46 3d 22 23 41 75 74 68 6f 72 22 3e 41  HREF="#Author">A
0190: 75 74 68 6f 72 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c  uthor</A>.<LI> <
01a0: 41 20 48 52 45 46 3d 22 23 41 63 6b 6e 6f 77 6c  A HREF="#Acknowl
01b0: 65 64 67 65 6d 65 6e 74 73 22 3e 41 63 6b 6e 6f  edgements">Ackno
01c0: 77 6c 65 64 67 65 6d 65 6e 74 73 3c 2f 41 3e 0a  wledgements</A>.
01d0: 3c 2f 55 4c 3e 0a 3c 50 3e 0a 0a 3c 48 52 3e 0a  </UL>.<P>..<HR>.
01e0: 0a 3c 41 20 4e 41 4d 45 3d 22 4e 61 6d 65 22 3e  .<A NAME="Name">
01f0: 0a 3c 48 32 3e 4e 61 6d 65 3c 2f 48 32 3e 0a 3c  .<H2>Name</H2>.<
0200: 2f 41 3e 0a 0a 76 61 63 61 6c 6c 20 2d 20 20 43  /A>..vacall -  C
0210: 20 66 75 6e 63 74 69 6f 6e 73 20 63 61 6c 6c 65   functions calle
0220: 64 20 77 69 74 68 20 76 61 72 69 61 62 6c 65 20  d with variable 
0230: 61 72 67 75 6d 65 6e 74 73 0a 0a 3c 41 20 4e 41  arguments..<A NA
0240: 4d 45 3d 22 53 79 6e 6f 70 73 69 73 22 3e 0a 3c  ME="Synopsis">.<
0250: 48 32 3e 53 79 6e 6f 70 73 69 73 3c 2f 48 32 3e  H2>Synopsis</H2>
0260: 0a 3c 2f 41 3e 0a 0a 3c 50 52 45 3e 0a 3c 43 4f  .</A>..<PRE>.<CO
0270: 44 45 3e 23 69 6e 63 6c 75 64 65 20 26 6c 74 3b  DE>#include &lt;
0280: 76 61 63 61 6c 6c 2e 68 26 67 74 3b 3c 2f 43 4f  vacall.h&gt;</CO
0290: 44 45 3e 0a 3c 2f 50 52 45 3e 0a 3c 50 3e 0a 3c  DE>.</PRE>.<P>.<
02a0: 50 52 45 3e 0a 3c 43 4f 44 45 3e 65 78 74 65 72  PRE>.<CODE>exter
02b0: 6e 20 76 6f 69 64 2a 20 76 61 63 61 6c 6c 5f 66  n void* vacall_f
02c0: 75 6e 63 74 69 6f 6e 3b 3c 2f 43 4f 44 45 3e 0a  unction;</CODE>.
02d0: 3c 2f 50 52 45 3e 0a 3c 50 3e 0a 3c 50 52 45 3e  </PRE>.<P>.<PRE>
02e0: 0a 3c 43 4f 44 45 3e 76 6f 69 64 20 3c 56 41 52  .<CODE>void <VAR
02f0: 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e 20  >function</VAR> 
0300: 28 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 52  (<VAR>alist</VAR
0310: 3e 29 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e  >)</CODE>.<CODE>
0320: 20 20 76 61 5f 61 6c 69 73 74 20 3c 56 41 52 3e    va_alist <VAR>
0330: 61 6c 69 73 74 3c 2f 56 41 52 3e 3b 3c 2f 43 4f  alist</VAR>;</CO
0340: 44 45 3e 0a 3c 43 4f 44 45 3e 7b 3c 2f 43 4f 44  DE>.<CODE>{</COD
0350: 45 3e 0a 3c 43 4f 44 45 3e 20 20 76 61 5f 73 74  E>.<CODE>  va_st
0360: 61 72 74 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56  art_<VAR>type</V
0370: 41 52 3e 28 3c 56 41 52 3e 61 6c 69 73 74 3c 2f  AR>(<VAR>alist</
0380: 56 41 52 3e 5b 2c 20 3c 56 41 52 3e 72 65 74 75  VAR>[, <VAR>retu
0390: 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e 5d 29 3b  rn_type</VAR>]);
03a0: 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 20 20  </CODE>.<CODE>  
03b0: 61 72 67 20 3d 20 76 61 5f 61 72 67 5f 3c 56 41  arg = va_arg_<VA
03c0: 52 3e 74 79 70 65 3c 2f 56 41 52 3e 28 3c 56 41  R>type</VAR>(<VA
03d0: 52 3e 61 6c 69 73 74 3c 2f 56 41 52 3e 5b 2c 20  R>alist</VAR>[, 
03e0: 3c 56 41 52 3e 61 72 67 5f 74 79 70 65 3c 2f 56  <VAR>arg_type</V
03f0: 41 52 3e 5d 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 43  AR>]);</CODE>.<C
0400: 4f 44 45 3e 20 20 76 61 5f 72 65 74 75 72 6e 5f  ODE>  va_return_
0410: 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e 28  <VAR>type</VAR>(
0420: 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 52 3e  <VAR>alist</VAR>
0430: 5b 5b 2c 20 3c 56 41 52 3e 72 65 74 75 72 6e 5f  [[, <VAR>return_
0440: 74 79 70 65 3c 2f 56 41 52 3e 5d 2c 20 3c 56 41  type</VAR>], <VA
0450: 52 3e 72 65 74 75 72 6e 5f 76 61 6c 75 65 3c 2f  R>return_value</
0460: 56 41 52 3e 5d 29 3b 3c 2f 43 4f 44 45 3e 0a 3c  VAR>]);</CODE>.<
0470: 43 4f 44 45 3e 7d 3c 2f 43 4f 44 45 3e 0a 3c 2f  CODE>}</CODE>.</
0480: 50 52 45 3e 0a 3c 50 3e 0a 3c 50 52 45 3e 0a 3c  PRE>.<P>.<PRE>.<
0490: 43 4f 44 45 3e 76 61 63 61 6c 6c 5f 66 75 6e 63  CODE>vacall_func
04a0: 74 69 6f 6e 20 3d 20 3c 56 41 52 3e 26 66 75 6e  tion = <VAR>&fun
04b0: 63 74 69 6f 6e 3c 2f 56 41 52 3e 3b 3c 2f 43 4f  ction</VAR>;</CO
04c0: 44 45 3e 0a 3c 2f 50 52 45 3e 0a 3c 50 3e 0a 3c  DE>.</PRE>.<P>.<
04d0: 50 52 45 3e 0a 3c 43 4f 44 45 3e 3c 56 41 52 3e  PRE>.<CODE><VAR>
04e0: 76 61 6c 3c 2f 56 41 52 3e 20 3d 20 28 28 3c 56  val</VAR> = ((<V
04f0: 41 52 3e 72 65 74 75 72 6e 5f 74 79 70 65 3c 2f  AR>return_type</
0500: 56 41 52 3e 20 28 2a 29 20 28 29 29 20 76 61 63  VAR> (*) ()) vac
0510: 61 6c 6c 29 20 28 3c 56 41 52 3e 61 72 67 31 3c  all) (<VAR>arg1<
0520: 2f 56 41 52 3e 2c 3c 56 41 52 3e 61 72 67 32 3c  /VAR>,<VAR>arg2<
0530: 2f 56 41 52 3e 2c 3c 56 41 52 3e 2e 2e 2e 3c 2f  /VAR>,<VAR>...</
0540: 56 41 52 3e 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 2f  VAR>);</CODE>.</
0550: 50 52 45 3e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 44  PRE>..<A NAME="D
0560: 65 73 63 72 69 70 74 69 6f 6e 22 3e 0a 3c 48 32  escription">.<H2
0570: 3e 44 65 73 63 72 69 70 74 69 6f 6e 3c 2f 48 32  >Description</H2
0580: 3e 0a 3c 2f 41 3e 0a 0a 54 68 69 73 20 20 73 65  >.</A>..This  se
0590: 74 20 20 6f 66 20 20 6d 61 63 72 6f 73 20 20 70  t  of  macros  p
05a0: 65 72 6d 69 74 20 20 61 20 43 20 66 75 6e 63 74  ermit  a C funct
05b0: 69 6f 6e 20 3c 56 41 52 3e 66 75 6e 63 74 69 6f  ion <VAR>functio
05c0: 6e 3c 2f 56 41 52 3e 20 74 6f 20 62 65 0a 63 61  n</VAR> to be.ca
05d0: 6c 6c 65 64 20 77 69 74 68 20 76 61 72 69 61 62  lled with variab
05e0: 6c 65 20 20 61 72 67 75 6d 65 6e 74 73 20 20 61  le  arguments  a
05f0: 6e 64 20 20 74 6f 20 20 72 65 74 75 72 6e 20 20  nd  to  return  
0600: 76 61 72 69 61 62 6c 65 0a 72 65 74 75 72 6e 20  variable.return 
0610: 76 61 6c 75 65 73 2e 20 20 54 68 69 73 20 69 73  values.  This is
0620: 20 6d 75 63 68 20 6c 69 6b 65 20 74 68 65 20 3c   much like the <
0630: 41 20 48 52 45 46 3d 22 76 61 72 61 72 67 73 28  A HREF="varargs(
0640: 33 29 22 3e 3c 43 4f 44 45 3e 3c 42 3e 76 61 72  3)"><CODE><B>var
0650: 61 72 67 73 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c  args</B></CODE><
0660: 2f 41 3e 28 33 29 20 66 61 63 69 6c 69 74 79 2c  /A>(3) facility,
0670: 0a 62 75 74 20 61 6c 73 6f 20 61 6c 6c 6f 77 73  .but also allows
0680: 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
0690: 65 20 74 6f 20 62 65 20 20 73 70 65 63 69 66 69  e to be  specifi
06a0: 65 64 20 20 61 74 20 20 72 75 6e 0a 74 69 6d 65  ed  at  run.time
06b0: 2e 0a 3c 50 3e 0a 46 75 6e 63 74 69 6f 6e 20 20  ..<P>.Function  
06c0: 63 61 6c 6c 69 6e 67 20 20 63 6f 6e 76 65 6e 74  calling  convent
06d0: 69 6f 6e 73 20 64 69 66 66 65 72 20 63 6f 6e 73  ions differ cons
06e0: 69 64 65 72 61 62 6c 79 20 6f 6e 20 64 69 66 66  iderably on diff
06f0: 65 72 65 6e 74 0a 6d 61 63 68 69 6e 65 73 2c 20  erent.machines, 
0700: 20 61 6e 64 20 3c 53 41 4d 50 3e 76 61 63 61 6c   and <SAMP>vacal
0710: 6c 3c 2f 53 41 4d 50 3e 20 20 61 74 74 65 6d 70  l</SAMP>  attemp
0720: 74 73 20 20 74 6f 20 20 70 72 6f 76 69 64 65 20  ts  to  provide 
0730: 20 73 6f 6d 65 0a 64 65 67 72 65 65 20 6f 66 20   some.degree of 
0740: 69 73 6f 6c 61 74 69 6f 6e 20 66 72 6f 6d 20 73  isolation from s
0750: 75 63 68 20 61 72 63 68 69 74 65 63 74 75 72 65  uch architecture
0760: 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e 0a 3c   dependencies..<
0770: 50 3e 0a 54 68 65 20 20 66 75 6e 63 74 69 6f 6e  P>.The  function
0780: 20 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 61    that can be ca
0790: 6c 6c 65 64 20 77 69 74 68 20 61 6e 79 20 6e 75  lled with any nu
07a0: 6d 62 65 72 20 61 6e 64 20 74 79 70 65 0a 6f 66  mber and type.of
07b0: 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 77   arguments and w
07c0: 68 69 63 68 20 77 69 6c 6c 20 20 72 65 74 75 72  hich will  retur
07d0: 6e 20 20 61 6e 79 20 20 74 79 70 65 20 20 6f 66  n  any  type  of
07e0: 20 20 72 65 74 75 72 6e 0a 76 61 6c 75 65 20 69    return.value i
07f0: 73 20 3c 43 4f 44 45 3e 76 61 63 61 6c 6c 3c 2f  s <CODE>vacall</
0800: 43 4f 44 45 3e 2e 20 20 49 74 20 77 69 6c 6c 20  CODE>.  It will 
0810: 64 6f 20 73 6f 6d 65 20 6d 61 67 69 63 20 61 6e  do some magic an
0820: 64 20 63 61 6c 6c 20 74 68 65 20 66 75 6e 63 74  d call the funct
0830: 69 6f 6e 0a 73 74 6f 72 65 64 20 69 6e 20 74 68  ion.stored in th
0840: 65 20 76 61 72 69 61 62 6c 65 20 3c 43 4f 44 45  e variable <CODE
0850: 3e 76 61 63 61 6c 6c 5f 66 75 6e 63 74 69 6f 6e  >vacall_function
0860: 3c 2f 43 4f 44 45 3e 2e 20 20 49 66 20 79 6f 75  </CODE>.  If you
0870: 20 20 77 61 6e 74 0a 74 6f 20 6d 61 6b 65 20 6d    want.to make m
0880: 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 75 73 65  ore than one use
0890: 20 6f 66 20 3c 53 41 4d 50 3e 76 61 63 61 6c 6c   of <SAMP>vacall
08a0: 3c 2f 53 41 4d 50 3e 2c 0a 75 73 65 20 74 68 65  </SAMP>,.use the
08b0: 20 3c 41 20 48 52 45 46 3d 22 74 72 61 6d 70 6f   <A HREF="trampo
08c0: 6c 69 6e 65 28 33 29 22 3e 3c 43 4f 44 45 3e 3c  line(3)"><CODE><
08d0: 42 3e 74 72 61 6d 70 6f 6c 69 6e 65 3c 2f 42 3e  B>trampoline</B>
08e0: 3c 2f 43 4f 44 45 3e 3c 2f 41 3e 28 33 29 0a 66  </CODE></A>(3).f
08f0: 61 63 69 6c 69 74 79 20 74 6f 20 20 73 74 6f 72  acility to  stor
0900: 65 20 3c 43 4f 44 45 3e 3c 56 41 52 3e 26 61 6d  e <CODE><VAR>&am
0910: 70 3b 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e  p;function</VAR>
0920: 3c 2f 43 4f 44 45 3e 0a 20 20 69 6e 74 6f 20 20  </CODE>.  into  
0930: 3c 43 4f 44 45 3e 76 61 63 61 6c 6c 5f 66 75 6e  <CODE>vacall_fun
0940: 63 74 69 6f 6e 3c 2f 43 4f 44 45 3e 20 20 6a 75  ction</CODE>  ju
0950: 73 74 0a 62 65 66 6f 72 65 20 63 61 6c 6c 69 6e  st.before callin
0960: 67 20 3c 43 4f 44 45 3e 76 61 63 61 6c 6c 3c 2f  g <CODE>vacall</
0970: 43 4f 44 45 3e 2e 0a 3c 50 3e 0a 57 69 74 68 69  CODE>..<P>.Withi
0980: 6e 20 3c 56 41 52 3e 66 75 6e 63 74 69 6f 6e 3c  n <VAR>function<
0990: 2f 56 41 52 3e 2c 20 74 68 65 20 66 6f 6c 6c 6f  /VAR>, the follo
09a0: 77 69 6e 67 20 6d 61 63 72 6f 73 20 63 61 6e 20  wing macros can 
09b0: 62 65 20 75 73 65 64 20 74 6f 20 77 61 6c 6b 0a  be used to walk.
09c0: 74 68 72 6f 75 67 68 20 74 68 65 20 61 72 67 75  through the argu
09d0: 6d 65 6e 74 20 6c 69 73 74 20 61 6e 64 20 73 70  ment list and sp
09e0: 65 63 69 66 79 20 61 20 72 65 74 75 72 6e 20 76  ecify a return v
09f0: 61 6c 75 65 3a 0a 3c 50 3e 0a 3c 50 52 45 3e 0a  alue:.<P>.<PRE>.
0a00: 3c 43 4f 44 45 3e 76 61 5f 73 74 61 72 74 5f 3c  <CODE>va_start_<
0a10: 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e 28 3c  VAR>type</VAR>(<
0a20: 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 52 3e 5b  VAR>alist</VAR>[
0a30: 2c 20 3c 56 41 52 3e 72 65 74 75 72 6e 5f 74 79  , <VAR>return_ty
0a40: 70 65 3c 2f 56 41 52 3e 5d 29 3b 3c 2f 43 4f 44  pe</VAR>]);</COD
0a50: 45 3e 0a 3c 2f 50 52 45 3e 0a 73 74 61 72 74 73  E>.</PRE>.starts
0a60: 20 74 68 65 20 77 61 6c 6b 20 74 68 72 6f 75 67   the walk throug
0a70: 68 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c  h the argument l
0a80: 69 73 74 20 61 6e 64 20 73 70 65 63 69 66 69 65  ist and specifie
0a90: 73 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 70  s the return typ
0aa0: 65 2e 0a 3c 50 3e 0a 3c 50 52 45 3e 0a 3c 43 4f  e..<P>.<PRE>.<CO
0ab0: 44 45 3e 61 72 67 20 3d 20 76 61 5f 61 72 67 5f  DE>arg = va_arg_
0ac0: 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e 28  <VAR>type</VAR>(
0ad0: 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 52 3e  <VAR>alist</VAR>
0ae0: 5b 2c 20 3c 56 41 52 3e 61 72 67 5f 74 79 70 65  [, <VAR>arg_type
0af0: 3c 2f 56 41 52 3e 5d 29 3b 3c 2f 43 4f 44 45 3e  </VAR>]);</CODE>
0b00: 0a 3c 2f 50 52 45 3e 0a 66 65 74 63 68 65 73 20  .</PRE>.fetches 
0b10: 74 68 65 20 6e 65 78 74 20 61 72 67 75 6d 65 6e  the next argumen
0b20: 74 20 66 72 6f 6d 20 74 68 65 20 61 72 67 75 6d  t from the argum
0b30: 65 6e 74 20 6c 69 73 74 2e 0a 3c 50 3e 0a 3c 50  ent list..<P>.<P
0b40: 52 45 3e 0a 3c 43 4f 44 45 3e 76 61 5f 72 65 74  RE>.<CODE>va_ret
0b50: 75 72 6e 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56  urn_<VAR>type</V
0b60: 41 52 3e 28 3c 56 41 52 3e 61 6c 69 73 74 3c 2f  AR>(<VAR>alist</
0b70: 56 41 52 3e 5b 5b 2c 20 3c 56 41 52 3e 72 65 74  VAR>[[, <VAR>ret
0b80: 75 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e 5d 2c  urn_type</VAR>],
0b90: 20 3c 56 41 52 3e 72 65 74 75 72 6e 5f 76 61 6c   <VAR>return_val
0ba0: 75 65 3c 2f 56 41 52 3e 5d 29 3b 3c 2f 43 4f 44  ue</VAR>]);</COD
0bb0: 45 3e 0a 3c 2f 50 52 45 3e 0a 65 6e 64 73 20 20  E>.</PRE>.ends  
0bc0: 74 68 65 20 77 61 6c 6b 20 74 68 72 6f 75 67 68  the walk through
0bd0: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69   the argument li
0be0: 73 74 20 61 6e 64 20 73 70 65 63 69 66 69 65 73  st and specifies
0bf0: 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75   the return valu
0c00: 65 2e 0a 3c 50 3e 0a 54 68 65 20 3c 56 41 52 3e  e..<P>.The <VAR>
0c10: 74 79 70 65 3c 2f 56 41 52 3e 20 69 6e 20 3c 43  type</VAR> in <C
0c20: 4f 44 45 3e 76 61 5f 73 74 61 72 74 5f 3c 56 41  ODE>va_start_<VA
0c30: 52 3e 74 79 70 65 3c 2f 56 41 52 3e 3c 2f 43 4f  R>type</VAR></CO
0c40: 44 45 3e 0a 20 61 6e 64 20 3c 43 4f 44 45 3e 76  DE>. and <CODE>v
0c50: 61 5f 72 65 74 75 72 6e 5f 3c 56 41 52 3e 74 79  a_return_<VAR>ty
0c60: 70 65 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 20  pe</VAR></CODE> 
0c70: 73 68 61 6c 6c 20 62 65 20 20 6f 6e 65 0a 6f 66  shall be  one.of
0c80: 20 3c 43 4f 44 45 3e 76 6f 69 64 3c 2f 43 4f 44   <CODE>void</COD
0c90: 45 3e 2c 20 20 3c 43 4f 44 45 3e 69 6e 74 3c 2f  E>,  <CODE>int</
0ca0: 43 4f 44 45 3e 2c 20 20 3c 43 4f 44 45 3e 75 69  CODE>,  <CODE>ui
0cb0: 6e 74 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45  nt</CODE>, <CODE
0cc0: 3e 6c 6f 6e 67 3c 2f 43 4f 44 45 3e 2c 0a 3c 43  >long</CODE>,.<C
0cd0: 4f 44 45 3e 75 6c 6f 6e 67 3c 2f 43 4f 44 45 3e  ODE>ulong</CODE>
0ce0: 2c 20 3c 43 4f 44 45 3e 6c 6f 6e 67 6c 6f 6e 67  , <CODE>longlong
0cf0: 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 75  </CODE>, <CODE>u
0d00: 6c 6f 6e 67 6c 6f 6e 67 3c 2f 43 4f 44 45 3e 2c  longlong</CODE>,
0d10: 0a 3c 43 4f 44 45 3e 64 6f 75 62 6c 65 3c 2f 43  .<CODE>double</C
0d20: 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 73 74 72 75  ODE>, <CODE>stru
0d30: 63 74 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45  ct</CODE>, <CODE
0d40: 3e 70 74 72 3c 2f 43 4f 44 45 3e 0a 6f 72 0a 28  >ptr</CODE>.or.(
0d50: 66 6f 72 20 41 4e 53 49 20 43 20 63 61 6c 6c 69  for ANSI C calli
0d60: 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 6f  ng conventions o
0d70: 6e 6c 79 29 0a 3c 43 4f 44 45 3e 63 68 61 72 3c  nly).<CODE>char<
0d80: 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 73 63  /CODE>, <CODE>sc
0d90: 68 61 72 3c 2f 43 4f 44 45 3e 2c 20 20 3c 43 4f  har</CODE>,  <CO
0da0: 44 45 3e 75 63 68 61 72 3c 2f 43 4f 44 45 3e 2c  DE>uchar</CODE>,
0db0: 0a 3c 43 4f 44 45 3e 73 68 6f 72 74 3c 2f 43 4f  .<CODE>short</CO
0dc0: 44 45 3e 2c 20 20 20 3c 43 4f 44 45 3e 75 73 68  DE>,   <CODE>ush
0dd0: 6f 72 74 3c 2f 43 4f 44 45 3e 2c 20 20 20 3c 43  ort</CODE>,   <C
0de0: 4f 44 45 3e 66 6c 6f 61 74 3c 2f 43 4f 44 45 3e  ODE>float</CODE>
0df0: 2c 0a 64 65 70 65 6e 64 69 6e 67 20 20 20 6f 6e  ,.depending   on
0e00: 20 20 74 68 65 20 20 63 6c 61 73 73 20 20 6f 66    the  class  of
0e10: 20 3c 56 41 52 3e 72 65 74 75 72 6e 5f 74 79 70   <VAR>return_typ
0e20: 65 3c 2f 56 41 52 3e 2e 0a 3c 50 3e 0a 54 68 65  e</VAR>..<P>.The
0e30: 20 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e   <VAR>type</VAR>
0e40: 20 73 70 65 63 69 66 69 65 72 73 20 69 6e 0a 3c   specifiers in.<
0e50: 43 4f 44 45 3e 76 61 5f 73 74 61 72 74 5f 3c 56  CODE>va_start_<V
0e60: 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e 3c 2f 43  AR>type</VAR></C
0e70: 4f 44 45 3e 20 61 6e 64 20 3c 43 4f 44 45 3e 76  ODE> and <CODE>v
0e80: 61 5f 72 65 74 75 72 6e 5f 3c 56 41 52 3e 74 79  a_return_<VAR>ty
0e90: 70 65 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 0a  pe</VAR></CODE>.
0ea0: 20 6d 75 73 74 20 62 65 20 74 68 65 20 73 61 6d   must be the sam
0eb0: 65 2e 0a 54 68 65 20 3c 56 41 52 3e 72 65 74 75  e..The <VAR>retu
0ec0: 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e 20 73 70  rn_type</VAR> sp
0ed0: 65 63 69 66 69 65 72 73 20 20 20 70 61 73 73 65  ecifiers   passe
0ee0: 64 20 20 20 20 74 6f 0a 3c 43 4f 44 45 3e 76 61  d    to.<CODE>va
0ef0: 5f 73 74 61 72 74 5f 3c 56 41 52 3e 74 79 70 65  _start_<VAR>type
0f00: 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 20 61 6e  </VAR></CODE> an
0f10: 64 20 3c 43 4f 44 45 3e 76 61 5f 72 65 74 75 72  d <CODE>va_retur
0f20: 6e 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52  n_<VAR>type</VAR
0f30: 3e 3c 2f 43 4f 44 45 3e 0a 20 6d 75 73 74 20 62  ></CODE>. must b
0f40: 65 20 74 68 65 20 73 61 6d 65 2e 0a 3c 50 3e 0a  e the same..<P>.
0f50: 54 68 65 20 3c 56 41 52 3e 74 79 70 65 3c 2f 56  The <VAR>type</V
0f60: 41 52 3e 20 69 6e 20 3c 43 4f 44 45 3e 76 61 5f  AR> in <CODE>va_
0f70: 61 72 67 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56  arg_<VAR>type</V
0f80: 41 52 3e 3c 2f 43 4f 44 45 3e 0a 73 68 61 6c 6c  AR></CODE>.shall
0f90: 20 62 65 20 6f 6e 65 20 6f 66 20 3c 43 4f 44 45   be one of <CODE
0fa0: 3e 69 6e 74 3c 2f 43 4f 44 45 3e 2c 20 20 3c 43  >int</CODE>,  <C
0fb0: 4f 44 45 3e 75 69 6e 74 3c 2f 43 4f 44 45 3e 2c  ODE>uint</CODE>,
0fc0: 20 3c 43 4f 44 45 3e 6c 6f 6e 67 3c 2f 43 4f 44   <CODE>long</COD
0fd0: 45 3e 2c 0a 3c 43 4f 44 45 3e 75 6c 6f 6e 67 3c  E>,.<CODE>ulong<
0fe0: 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 6c 6f  /CODE>, <CODE>lo
0ff0: 6e 67 6c 6f 6e 67 3c 2f 43 4f 44 45 3e 2c 20 3c  nglong</CODE>, <
1000: 43 4f 44 45 3e 75 6c 6f 6e 67 6c 6f 6e 67 3c 2f  CODE>ulonglong</
1010: 43 4f 44 45 3e 2c 0a 3c 43 4f 44 45 3e 64 6f 75  CODE>,.<CODE>dou
1020: 62 6c 65 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44  ble</CODE>, <COD
1030: 45 3e 73 74 72 75 63 74 3c 2f 43 4f 44 45 3e 2c  E>struct</CODE>,
1040: 20 3c 43 4f 44 45 3e 70 74 72 3c 2f 43 4f 44 45   <CODE>ptr</CODE
1050: 3e 0a 6f 72 20 28 66 6f 72 20 41 4e 53 49 20 43  >.or (for ANSI C
1060: 20 63 61 6c 6c 69 6e 67 20 20 63 6f 6e 76 65 6e   calling  conven
1070: 74 69 6f 6e 73 20 20 6f 6e 6c 79 29 0a 3c 43 4f  tions  only).<CO
1080: 44 45 3e 63 68 61 72 3c 2f 43 4f 44 45 3e 2c 20  DE>char</CODE>, 
1090: 3c 43 4f 44 45 3e 73 63 68 61 72 3c 2f 43 4f 44  <CODE>schar</COD
10a0: 45 3e 2c 20 20 3c 43 4f 44 45 3e 75 63 68 61 72  E>,  <CODE>uchar
10b0: 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f 44 45 3e 73  </CODE>,.<CODE>s
10c0: 68 6f 72 74 3c 2f 43 4f 44 45 3e 2c 20 20 20 3c  hort</CODE>,   <
10d0: 43 4f 44 45 3e 75 73 68 6f 72 74 3c 2f 43 4f 44  CODE>ushort</COD
10e0: 45 3e 2c 20 20 20 3c 43 4f 44 45 3e 66 6c 6f 61  E>,   <CODE>floa
10f0: 74 3c 2f 43 4f 44 45 3e 2c 0a 64 65 70 65 6e 64  t</CODE>,.depend
1100: 69 6e 67 20 20 20 6f 6e 20 20 74 68 65 20 20 63  ing   on  the  c
1110: 6c 61 73 73 20 20 6f 66 20 3c 56 41 52 3e 61 72  lass  of <VAR>ar
1120: 67 5f 74 79 70 65 3c 2f 56 41 52 3e 2e 0a 3c 50  g_type</VAR>..<P
1130: 3e 0a 49 6e 20 3c 43 4f 44 45 3e 76 61 5f 73 74  >.In <CODE>va_st
1140: 61 72 74 5f 73 74 72 75 63 74 28 3c 56 41 52 3e  art_struct(<VAR>
1150: 61 6c 69 73 74 3c 2f 56 41 52 3e 2c 20 3c 56 41  alist</VAR>, <VA
1160: 52 3e 72 65 74 75 72 6e 5f 74 79 70 65 3c 2f 56  R>return_type</V
1170: 41 52 3e 2c 20 3c 56 41 52 3e 73 70 6c 69 74 74  AR>, <VAR>splitt
1180: 61 62 6c 65 3c 2f 56 41 52 3e 29 3b 3c 2f 43 4f  able</VAR>);</CO
1190: 44 45 3e 20 74 68 65 0a 3c 56 41 52 3e 73 70 6c  DE> the.<VAR>spl
11a0: 69 74 74 61 62 6c 65 3c 2f 56 41 52 3e 20 66 6c  ittable</VAR> fl
11b0: 61 67 20 73 70 65 63 69 66 69 65 73 20 77 68 65  ag specifies whe
11c0: 74 68 65 72 20 74 68 65 20 73 74 72 75 63 74 20  ther the struct 
11d0: 3c 56 41 52 3e 72 65 74 75 72 6e 5f 74 79 70 65  <VAR>return_type
11e0: 3c 2f 56 41 52 3e 20 63 61 6e 0a 62 65 20 72 65  </VAR> can.be re
11f0: 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 74  turned in regist
1200: 65 72 73 20 73 75 63 68 20 74 68 61 74 20 65 76  ers such that ev
1210: 65 72 79 20 73 74 72 75 63 74 20 66 69 65 6c 64  ery struct field
1220: 20 66 69 74 73 0a 65 6e 74 69 72 65 6c 79 20 20   fits.entirely  
1230: 69 6e 20 61 20 73 69 6e 67 6c 65 20 72 65 67 69  in a single regi
1240: 73 74 65 72 2e 20 54 68 69 73 20 6e 65 65 64 73  ster. This needs
1250: 20 74 6f 20 62 65 20 73 70 65 63 69 66 69 65 64   to be specified
1260: 0a 66 6f 72 20 73 74 72 75 63 74 73 20 6f 66 20  .for structs of 
1270: 73 69 7a 65 20 3c 53 41 4d 50 3e 32 2a 73 69 7a  size <SAMP>2*siz
1280: 65 6f 66 28 6c 6f 6e 67 29 3c 2f 53 41 4d 50 3e  eof(long)</SAMP>
1290: 2e 20 46 6f 72 20 73 74 72 75 63 74 73 20 6f 66  . For structs of
12a0: 20 73 69 7a 65 0a 26 6c 74 3b 3d 20 3c 53 41 4d   size.&lt;= <SAM
12b0: 50 3e 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 3c 2f  P>sizeof(long)</
12c0: 53 41 4d 50 3e 2c 20 20 73 70 6c 69 74 74 61 62  SAMP>,  splittab
12d0: 6c 65 20 20 69 73 20 69 67 6e 6f 72 65 64 20 61  le  is ignored a
12e0: 6e 64 20 61 73 73 75 6d 65 64 20 74 6f 20 62 65  nd assumed to be
12f0: 20 31 2e 0a 46 6f 72 20 20 73 74 72 75 63 74 73   1..For  structs
1300: 20 20 6f 66 20 20 73 69 7a 65 20 20 26 67 74 3b    of  size  &gt;
1310: 20 3c 53 41 4d 50 3e 32 2a 73 69 7a 65 6f 66 28   <SAMP>2*sizeof(
1320: 6c 6f 6e 67 29 3c 2f 53 41 4d 50 3e 2c 20 20 73  long)</SAMP>,  s
1330: 70 6c 69 74 74 61 62 6c 65 20 20 69 73 0a 69 67  plittable  is.ig
1340: 6e 6f 72 65 64 20 20 61 6e 64 20 20 61 73 73 75  nored  and  assu
1350: 6d 65 64 20 74 6f 20 62 65 20 30 2e 20 54 68 65  med to be 0. The
1360: 72 65 20 61 72 65 20 73 6f 6d 65 20 68 61 6e 64  re are some hand
1370: 79 20 6d 61 63 72 6f 73 0a 66 6f 72 20 74 68 69  y macros.for thi
1380: 73 3a 0a 3c 50 52 45 3e 0a 3c 43 4f 44 45 3e 76  s:.<PRE>.<CODE>v
1390: 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c  a_word_splittabl
13a0: 65 5f 31 20 28 3c 56 41 52 3e 74 79 70 65 31 3c  e_1 (<VAR>type1<
13b0: 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 0a 3c 43  /VAR>)</CODE>.<C
13c0: 4f 44 45 3e 76 61 5f 77 6f 72 64 5f 73 70 6c 69  ODE>va_word_spli
13d0: 74 74 61 62 6c 65 5f 32 20 28 3c 56 41 52 3e 74  ttable_2 (<VAR>t
13e0: 79 70 65 31 3c 2f 56 41 52 3e 2c 20 3c 56 41 52  ype1</VAR>, <VAR
13f0: 3e 74 79 70 65 32 3c 2f 56 41 52 3e 29 3c 2f 43  >type2</VAR>)</C
1400: 4f 44 45 3e 0a 3c 43 4f 44 45 3e 76 61 5f 77 6f  ODE>.<CODE>va_wo
1410: 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 33 20  rd_splittable_3 
1420: 28 3c 56 41 52 3e 74 79 70 65 31 3c 2f 56 41 52  (<VAR>type1</VAR
1430: 3e 2c 20 3c 56 41 52 3e 74 79 70 65 32 3c 2f 56  >, <VAR>type2</V
1440: 41 52 3e 2c 20 3c 56 41 52 3e 74 79 70 65 33 3c  AR>, <VAR>type3<
1450: 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 0a 3c 43  /VAR>)</CODE>.<C
1460: 4f 44 45 3e 76 61 5f 77 6f 72 64 5f 73 70 6c 69  ODE>va_word_spli
1470: 74 74 61 62 6c 65 5f 34 20 28 3c 56 41 52 3e 74  ttable_4 (<VAR>t
1480: 79 70 65 31 3c 2f 56 41 52 3e 2c 20 3c 56 41 52  ype1</VAR>, <VAR
1490: 3e 74 79 70 65 32 3c 2f 56 41 52 3e 2c 20 3c 56  >type2</VAR>, <V
14a0: 41 52 3e 74 79 70 65 33 3c 2f 56 41 52 3e 2c 20  AR>type3</VAR>, 
14b0: 3c 56 41 52 3e 74 79 70 65 34 3c 2f 56 41 52 3e  <VAR>type4</VAR>
14c0: 29 3c 2f 43 4f 44 45 3e 0a 3c 2f 50 52 45 3e 0a  )</CODE>.</PRE>.
14d0: 46 6f 72 20 61 20 73 74 72 75 63 74 20 77 69 74  For a struct wit
14e0: 68 20 74 68 72 65 65 20 73 6c 6f 74 73 0a 3c 50  h three slots.<P
14f0: 52 45 3e 0a 3c 43 4f 44 45 3e 73 74 72 75 63 74  RE>.<CODE>struct
1500: 20 7b 20 3c 56 41 52 3e 74 79 70 65 31 20 69 64   { <VAR>type1 id
1510: 31 3c 2f 56 41 52 3e 3b 20 3c 56 41 52 3e 74 79  1</VAR>; <VAR>ty
1520: 70 65 32 20 69 64 32 3c 2f 56 41 52 3e 3b 20 3c  pe2 id2</VAR>; <
1530: 56 41 52 3e 74 79 70 65 33 20 69 64 33 3c 2f 56  VAR>type3 id3</V
1540: 41 52 3e 3b 20 7d 3c 2f 43 4f 44 45 3e 0a 3c 2f  AR>; }</CODE>.</
1550: 50 52 45 3e 0a 79 6f 75 20 63 61 6e 20 73 70 65  PRE>.you can spe
1560: 63 69 66 79 20 3c 56 41 52 3e 73 70 6c 69 74 74  cify <VAR>splitt
1570: 61 62 6c 65 3c 2f 56 41 52 3e 20 61 73 0a 3c 43  able</VAR> as.<C
1580: 4f 44 45 3e 76 61 5f 77 6f 72 64 5f 73 70 6c 69  ODE>va_word_spli
1590: 74 74 61 62 6c 65 5f 33 20 28 3c 56 41 52 3e 74  ttable_3 (<VAR>t
15a0: 79 70 65 31 3c 2f 56 41 52 3e 2c 20 3c 56 41 52  ype1</VAR>, <VAR
15b0: 3e 74 79 70 65 32 3c 2f 56 41 52 3e 2c 20 3c 56  >type2</VAR>, <V
15c0: 41 52 3e 74 79 70 65 33 3c 2f 56 41 52 3e 29 3c  AR>type3</VAR>)<
15d0: 2f 43 4f 44 45 3e 2e 0a 0a 3c 41 20 4e 41 4d 45  /CODE>...<A NAME
15e0: 3d 22 4e 6f 74 65 73 22 3e 0a 3c 48 32 3e 4e 6f  ="Notes">.<H2>No
15f0: 74 65 73 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 3c  tes</H2>.</A>..<
1600: 4f 4c 3e 0a 3c 4c 49 3e 20 46 75 6e 63 74 69 6f  OL>.<LI> Functio
1610: 6e 73 20 77 68 69 63 68 20 77 61 6e 74 20 74 6f  ns which want to
1620: 20 65 6d 75 6c 61 74 65 20 4b 65 72 6e 69 67 68   emulate Kernigh
1630: 61 6e 20 26 61 6d 70 3b 20 52 69 74 63 68 69 65  an &amp; Ritchie
1640: 20 20 73 74 79 6c 65 0a 66 75 6e 63 74 69 6f 6e    style.function
1650: 73 20 20 28 69 2e 65 2e 2c 20 20 69 6e 20 20 41  s  (i.e.,  in  A
1660: 4e 53 49 20 20 43 2c 20 20 66 75 6e 63 74 69 6f  NSI  C,  functio
1670: 6e 73 20 77 69 74 68 6f 75 74 20 61 20 74 79 70  ns without a typ
1680: 65 64 0a 61 72 67 75 6d 65 6e 74 20 6c 69 73 74  ed.argument list
1690: 29 20 63 61 6e 6e 6f 74 20 75 73 65 20 74 68 65  ) cannot use the
16a0: 20 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e   <VAR>type</VAR>
16b0: 20 20 76 61 6c 75 65 73 0a 3c 43 4f 44 45 3e 63    values.<CODE>c
16c0: 68 61 72 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44  har</CODE>, <COD
16d0: 45 3e 73 63 68 61 72 3c 2f 43 4f 44 45 3e 2c 20  E>schar</CODE>, 
16e0: 20 3c 43 4f 44 45 3e 75 63 68 61 72 3c 2f 43 4f   <CODE>uchar</CO
16f0: 44 45 3e 2c 0a 3c 43 4f 44 45 3e 73 68 6f 72 74  DE>,.<CODE>short
1700: 3c 2f 43 4f 44 45 3e 2c 20 20 20 3c 43 4f 44 45  </CODE>,   <CODE
1710: 3e 75 73 68 6f 72 74 3c 2f 43 4f 44 45 3e 2c 20  >ushort</CODE>, 
1720: 20 20 3c 43 4f 44 45 3e 66 6c 6f 61 74 3c 2f 43    <CODE>float</C
1730: 4f 44 45 3e 2e 0a 41 73 20 70 72 65 73 63 72 69  ODE>..As prescri
1740: 62 65 64 20 62 79 20 74 68 65 20 64 65 66 61 75  bed by the defau
1750: 6c 74 0a 4b 26 61 6d 70 3b 52 20 43 20 65 78 70  lt.K&amp;R C exp
1760: 72 65 73 73 69 6f 6e 20 70 72 6f 6d 6f 74 69 6f  ression promotio
1770: 6e 73 2c 20 74 68 65 79 20 68 61 76 65 20 74 6f  ns, they have to
1780: 20 75 73 65 20 3c 43 4f 44 45 3e 69 6e 74 3c 2f   use <CODE>int</
1790: 43 4f 44 45 3e 20 20 69 6e 73 74 65 61 64 0a 6f  CODE>  instead.o
17a0: 66 20 3c 43 4f 44 45 3e 63 68 61 72 3c 2f 43 4f  f <CODE>char</CO
17b0: 44 45 3e 2c 20 3c 43 4f 44 45 3e 73 63 68 61 72  DE>, <CODE>schar
17c0: 3c 2f 43 4f 44 45 3e 2c 20 20 3c 43 4f 44 45 3e  </CODE>,  <CODE>
17d0: 75 63 68 61 72 3c 2f 43 4f 44 45 3e 2c 0a 3c 43  uchar</CODE>,.<C
17e0: 4f 44 45 3e 73 68 6f 72 74 3c 2f 43 4f 44 45 3e  ODE>short</CODE>
17f0: 2c 20 20 20 3c 43 4f 44 45 3e 75 73 68 6f 72 74  ,   <CODE>ushort
1800: 3c 2f 43 4f 44 45 3e 20 61 6e 64 20 3c 43 4f 44  </CODE> and <COD
1810: 45 3e 64 6f 75 62 6c 65 3c 2f 43 4f 44 45 3e 20  E>double</CODE> 
1820: 69 6e 73 74 65 61 64 20 6f 66 0a 3c 43 4f 44 45  instead of.<CODE
1830: 3e 66 6c 6f 61 74 3c 2f 43 4f 44 45 3e 2e 0a 3c  >float</CODE>..<
1840: 50 3e 0a 3c 4c 49 3e 20 54 68 65 20 6d 61 63 72  P>.<LI> The macr
1850: 6f 73 20 3c 43 4f 44 45 3e 76 61 5f 73 74 61 72  os <CODE>va_star
1860: 74 5f 6c 6f 6e 67 6c 6f 6e 67 28 29 3c 2f 43 4f  t_longlong()</CO
1870: 44 45 3e 2c 0a 3c 43 4f 44 45 3e 76 61 5f 73 74  DE>,.<CODE>va_st
1880: 61 72 74 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 29 3c  art_ulonglong()<
1890: 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 76 61  /CODE>, <CODE>va
18a0: 5f 72 65 74 75 72 6e 5f 6c 6f 6e 67 6c 6f 6e 67  _return_longlong
18b0: 28 29 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f 44 45  ()</CODE>,.<CODE
18c0: 3e 76 61 5f 72 65 74 75 72 6e 5f 75 6c 6f 6e 67  >va_return_ulong
18d0: 6c 6f 6e 67 28 29 3c 2f 43 4f 44 45 3e 2c 20 3c  long()</CODE>, <
18e0: 43 4f 44 45 3e 76 61 5f 61 72 67 5f 6c 6f 6e 67  CODE>va_arg_long
18f0: 6c 6f 6e 67 28 29 3c 2f 43 4f 44 45 3e 20 61 6e  long()</CODE> an
1900: 64 0a 3c 43 4f 44 45 3e 76 61 5f 61 72 67 5f 75  d.<CODE>va_arg_u
1910: 6c 6f 6e 67 6c 6f 6e 67 28 29 3c 2f 43 4f 44 45  longlong()</CODE
1920: 3e 20 77 6f 72 6b 20 6f 6e 6c 79 20 69 66 20 74  > work only if t
1930: 68 65 20 43 20 63 6f 6d 70 69 6c 65 72 20 68 61  he C compiler ha
1940: 73 20 61 20 77 6f 72 6b 69 6e 67 0a 3c 43 4f 44  s a working.<COD
1950: 45 3e 6c 6f 6e 67 20 6c 6f 6e 67 3c 2f 43 4f 44  E>long long</COD
1960: 45 3e 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65  E> 64-bit intege
1970: 72 20 74 79 70 65 2e 0a 3c 50 3e 0a 3c 4c 49 3e  r type..<P>.<LI>
1980: 20 54 68 65 20 73 74 72 75 63 74 20 74 79 70 65   The struct type
1990: 73 20 75 73 65 64 20 69 6e 20 3c 43 4f 44 45 3e  s used in <CODE>
19a0: 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 28  va_start_struct(
19b0: 29 3c 2f 43 4f 44 45 3e 20 61 6e 64 0a 3c 43 4f  )</CODE> and.<CO
19c0: 44 45 3e 76 61 5f 73 74 72 75 63 74 28 29 3c 2f  DE>va_struct()</
19d0: 43 4f 44 45 3e 20 6d 75 73 74 20 6f 6e 6c 79 20  CODE> must only 
19e0: 63 6f 6e 74 61 69 6e 20 28 73 69 67 6e 65 64 20  contain (signed 
19f0: 6f 72 20 75 6e 73 69 67 6e 65 64 29 20 69 6e 74  or unsigned) int
1a00: 2c 0a 6c 6f 6e 67 2c 20 6c 6f 6e 67 20 6c 6f 6e  ,.long, long lon
1a10: 67 20 6f 72 20 70 6f 69 6e 74 65 72 20 66 69 65  g or pointer fie
1a20: 6c 64 73 2e 20 53 74 72 75 63 74 20 74 79 70 65  lds. Struct type
1a30: 73 20 63 6f 6e 74 61 69 6e 69 6e 67 0a 28 73 69  s containing.(si
1a40: 67 6e 65 64 20 6f 72 20 75 6e 73 69 67 6e 65 64  gned or unsigned
1a50: 29 20 63 68 61 72 2c 20 73 68 6f 72 74 2c 20 66  ) char, short, f
1a60: 6c 6f 61 74 2c 20 64 6f 75 62 6c 65 20 6f 72 20  loat, double or 
1a70: 6f 74 68 65 72 0a 73 74 72 75 63 74 73 20 61 72  other.structs ar
1a80: 65 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e  e not supported.
1a90: 0a 3c 50 3e 0a 3c 2f 4f 4c 3e 0a 0a 3c 41 20 4e  .<P>.</OL>..<A N
1aa0: 41 4d 45 3d 22 45 78 61 6d 70 6c 65 22 3e 0a 3c  AME="Example">.<
1ab0: 48 32 3e 45 78 61 6d 70 6c 65 3c 2f 48 32 3e 0a  H2>Example</H2>.
1ac0: 3c 2f 41 3e 0a 0a 54 68 69 73 20 65 78 61 6d 70  </A>..This examp
1ad0: 6c 65 2c 20 61 20 70 6f 73 73 69 62 6c 65 20 69  le, a possible i
1ae0: 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66  mplementation of
1af0: 20 3c 41 20 48 52 45 46 3d 22 65 78 65 63 6c 28   <A HREF="execl(
1b00: 33 29 22 3e 3c 43 4f 44 45 3e 3c 42 3e 65 78 65  3)"><CODE><B>exe
1b10: 63 6c 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c 2f 41  cl</B></CODE></A
1b20: 3e 28 33 29 20 6f 6e 20 74 6f 70 0a 6f 66 20 3c  >(3) on top.of <
1b30: 41 20 48 52 45 46 3d 22 65 78 65 63 76 28 32 29  A HREF="execv(2)
1b40: 22 3e 3c 43 4f 44 45 3e 3c 42 3e 65 78 65 63 76  "><CODE><B>execv
1b50: 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c 2f 41 3e 28  </B></CODE></A>(
1b60: 32 29 20 75 73 69 6e 67 20 3c 41 20 48 52 45 46  2) using <A HREF
1b70: 3d 22 76 61 72 61 72 67 73 28 33 29 22 3e 3c 43  ="varargs(3)"><C
1b80: 4f 44 45 3e 3c 42 3e 76 61 72 61 72 67 73 3c 2f  ODE><B>varargs</
1b90: 42 3e 3c 2f 43 4f 44 45 3e 3c 2f 41 3e 28 33 29  B></CODE></A>(3)
1ba0: 2c 0a 3c 50 52 45 3e 3c 43 4f 44 45 3e 23 69 6e  ,.<PRE><CODE>#in
1bb0: 63 6c 75 64 65 20 26 6c 74 3b 76 61 72 61 72 67  clude &lt;vararg
1bc0: 73 2e 68 26 67 74 3b 0a 23 64 65 66 69 6e 65 20  s.h&gt;.#define 
1bd0: 4d 41 58 41 52 47 53 20 31 30 30 0a 2f 2a 20 65  MAXARGS 100./* e
1be0: 78 65 63 6c 20 69 73 20 63 61 6c 6c 65 64 20 62  xecl is called b
1bf0: 79 20 65 78 65 63 6c 28 66 69 6c 65 2c 20 61 72  y execl(file, ar
1c00: 67 31 2c 20 61 72 67 32 2c 20 2e 2e 2e 2c 20 28  g1, arg2, ..., (
1c10: 63 68 61 72 20 2a 29 30 29 3b 20 2a 2f 0a 69 6e  char *)0); */.in
1c20: 74 20 65 78 65 63 6c 20 28 76 61 5f 61 6c 69 73  t execl (va_alis
1c30: 74 29 0a 20 20 76 61 5f 64 63 6c 0a 7b 0a 20 20  t).  va_dcl.{.  
1c40: 76 61 5f 6c 69 73 74 20 61 70 3b 0a 20 20 63 68  va_list ap;.  ch
1c50: 61 72 2a 20 66 69 6c 65 3b 0a 20 20 63 68 61 72  ar* file;.  char
1c60: 2a 20 61 72 67 73 5b 4d 41 58 41 52 47 53 5d 3b  * args[MAXARGS];
1c70: 0a 20 20 69 6e 74 20 61 72 67 6e 6f 20 3d 20 30  .  int argno = 0
1c80: 3b 0a 20 20 76 61 5f 73 74 61 72 74 20 28 61 70  ;.  va_start (ap
1c90: 29 3b 0a 20 20 66 69 6c 65 20 3d 20 76 61 5f 61  );.  file = va_a
1ca0: 72 67 28 61 70 2c 20 63 68 61 72 2a 29 3b 0a 20  rg(ap, char*);. 
1cb0: 20 77 68 69 6c 65 20 28 28 61 72 67 73 5b 61 72   while ((args[ar
1cc0: 67 6e 6f 5d 20 3d 20 76 61 5f 61 72 67 28 61 70  gno] = va_arg(ap
1cd0: 2c 20 63 68 61 72 2a 29 29 20 21 3d 20 28 63 68  , char*)) != (ch
1ce0: 61 72 20 2a 29 30 29 0a 20 20 20 20 61 72 67 6e  ar *)0).    argn
1cf0: 6f 2b 2b 3b 0a 20 20 76 61 5f 65 6e 64 20 28 61  o++;.  va_end (a
1d00: 70 29 3b 0a 20 20 72 65 74 75 72 6e 20 65 78 65  p);.  return exe
1d10: 63 76 28 66 69 6c 65 2c 20 61 72 67 73 29 3b 0a  cv(file, args);.
1d20: 7d 0a 3c 2f 43 4f 44 45 3e 3c 2f 50 52 45 3e 0a  }.</CODE></PRE>.
1d30: 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 68 69 73 20  looks like this 
1d40: 75 73 69 6e 67 20 3c 41 20 48 52 45 46 3d 22 76  using <A HREF="v
1d50: 61 63 61 6c 6c 28 33 29 22 3e 3c 43 4f 44 45 3e  acall(3)"><CODE>
1d60: 3c 42 3e 76 61 63 61 6c 6c 3c 2f 42 3e 3c 2f 43  <B>vacall</B></C
1d70: 4f 44 45 3e 3c 2f 41 3e 28 33 29 3a 0a 3c 50 52  ODE></A>(3):.<PR
1d80: 45 3e 3c 43 4f 44 45 3e 23 69 6e 63 6c 75 64 65  E><CODE>#include
1d90: 20 26 6c 74 3b 76 61 63 61 6c 6c 2e 68 26 67 74   &lt;vacall.h&gt
1da0: 3b 0a 23 64 65 66 69 6e 65 20 4d 41 58 41 52 47  ;.#define MAXARG
1db0: 53 20 31 30 30 0a 2f 2a 20 65 78 65 63 6c 20 69  S 100./* execl i
1dc0: 73 20 63 61 6c 6c 65 64 20 62 79 20 76 61 63 61  s called by vaca
1dd0: 6c 6c 28 66 69 6c 65 2c 20 61 72 67 31 2c 20 61  ll(file, arg1, a
1de0: 72 67 32 2c 20 2e 2e 2e 2c 20 28 63 68 61 72 20  rg2, ..., (char 
1df0: 2a 29 30 29 3b 20 2a 2f 0a 76 6f 69 64 20 65 78  *)0); */.void ex
1e00: 65 63 6c 20 28 61 70 29 0a 20 20 76 61 5f 61 6c  ecl (ap).  va_al
1e10: 69 73 74 20 61 70 3b 0a 7b 0a 20 20 63 68 61 72  ist ap;.{.  char
1e20: 2a 20 66 69 6c 65 3b 0a 20 20 63 68 61 72 2a 20  * file;.  char* 
1e30: 61 72 67 73 5b 4d 41 58 41 52 47 53 5d 3b 0a 20  args[MAXARGS];. 
1e40: 20 69 6e 74 20 61 72 67 6e 6f 20 3d 20 30 3b 0a   int argno = 0;.
1e50: 20 20 69 6e 74 20 72 65 74 76 61 6c 3b 0a 20 20    int retval;.  
1e60: 76 61 5f 73 74 61 72 74 5f 69 6e 74 20 28 61 70  va_start_int (ap
1e70: 29 3b 0a 20 20 66 69 6c 65 20 3d 20 76 61 5f 61  );.  file = va_a
1e80: 72 67 5f 70 74 72 28 61 70 2c 20 63 68 61 72 2a  rg_ptr(ap, char*
1e90: 29 3b 0a 20 20 77 68 69 6c 65 20 28 28 61 72 67  );.  while ((arg
1ea0: 73 5b 61 72 67 6e 6f 5d 20 3d 20 76 61 5f 61 72  s[argno] = va_ar
1eb0: 67 5f 70 74 72 28 61 70 2c 20 63 68 61 72 2a 29  g_ptr(ap, char*)
1ec0: 29 20 21 3d 20 28 63 68 61 72 20 2a 29 30 29 0a  ) != (char *)0).
1ed0: 20 20 20 20 61 72 67 6e 6f 2b 2b 3b 0a 20 20 72      argno++;.  r
1ee0: 65 74 76 61 6c 20 3d 20 65 78 65 63 76 28 66 69  etval = execv(fi
1ef0: 6c 65 2c 20 61 72 67 73 29 3b 0a 20 20 76 61 5f  le, args);.  va_
1f00: 72 65 74 75 72 6e 5f 69 6e 74 20 28 61 70 2c 20  return_int (ap, 
1f10: 72 65 74 76 61 6c 29 3b 0a 7d 0a 76 61 63 61 6c  retval);.}.vacal
1f20: 6c 5f 66 75 6e 63 74 69 6f 6e 20 3d 20 26 61 6d  l_function = &am
1f30: 70 3b 65 78 65 63 6c 3b 0a 3c 2f 43 4f 44 45 3e  p;execl;.</CODE>
1f40: 3c 2f 50 52 45 3e 0a 3c 50 3e 0a 0a 3c 41 20 4e  </PRE>.<P>..<A N
1f50: 41 4d 45 3d 22 53 65 65 20 61 6c 73 6f 22 3e 0a  AME="See also">.
1f60: 3c 48 32 3e 53 65 65 20 61 6c 73 6f 3c 2f 48 32  <H2>See also</H2
1f70: 3e 0a 3c 2f 41 3e 0a 0a 3c 41 20 48 52 45 46 3d  >.</A>..<A HREF=
1f80: 22 76 61 72 61 72 67 73 28 33 29 22 3e 3c 43 4f  "varargs(3)"><CO
1f90: 44 45 3e 3c 42 3e 76 61 72 61 72 67 73 3c 2f 42  DE><B>varargs</B
1fa0: 3e 3c 2f 43 4f 44 45 3e 3c 2f 41 3e 28 33 29 2c  ></CODE></A>(3),
1fb0: 20 3c 41 20 48 52 45 46 3d 22 74 72 61 6d 70 6f   <A HREF="trampo
1fc0: 6c 69 6e 65 28 33 29 22 3e 3c 43 4f 44 45 3e 3c  line(3)"><CODE><
1fd0: 42 3e 74 72 61 6d 70 6f 6c 69 6e 65 3c 2f 42 3e  B>trampoline</B>
1fe0: 3c 2f 43 4f 44 45 3e 3c 2f 41 3e 28 33 29 2c 20  </CODE></A>(3), 
1ff0: 3c 41 20 48 52 45 46 3d 22 63 61 6c 6c 62 61 63  <A HREF="callbac
2000: 6b 28 33 29 22 3e 3c 43 4f 44 45 3e 3c 42 3e 63  k(3)"><CODE><B>c
2010: 61 6c 6c 62 61 63 6b 3c 2f 42 3e 3c 2f 43 4f 44  allback</B></COD
2020: 45 3e 3c 2f 41 3e 28 33 29 2e 0a 0a 3c 41 20 4e  E></A>(3)...<A N
2030: 41 4d 45 3d 22 42 75 67 73 22 3e 0a 3c 48 32 3e  AME="Bugs">.<H2>
2040: 42 75 67 73 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a  Bugs</H2>.</A>..
2050: 54 68 65 20 20 63 75 72 72 65 6e 74 20 20 69 6d  The  current  im
2060: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 68 61  plementations ha
2070: 76 65 20 62 65 65 6e 20 74 65 73 74 65 64 20 6f  ve been tested o
2080: 6e 20 61 20 73 65 6c 65 63 74 69 6f 6e 0a 6f 66  n a selection.of
2090: 20 63 6f 6d 6d 6f 6e 20 63 61 73 65 73 20 62 75   common cases bu
20a0: 74 20 74 68 65 72 65 20 20 61 72 65 20 20 70 72  t there  are  pr
20b0: 6f 62 61 62 6c 79 20 20 73 74 69 6c 6c 20 20 6d  obably  still  m
20c0: 61 6e 79 0a 62 75 67 73 2e 0a 3c 50 3e 0a 54 68  any.bugs..<P>.Th
20d0: 65 72 65 20 20 61 72 65 20 20 74 79 70 69 63 61  ere  are  typica
20e0: 6c 6c 79 20 20 62 75 69 6c 74 2d 69 6e 20 20 6c  lly  built-in  l
20f0: 69 6d 69 74 73 20 6f 6e 20 74 68 65 20 73 69 7a  imits on the siz
2100: 65 20 6f 66 20 74 68 65 0a 61 72 67 75 6d 65 6e  e of the.argumen
2110: 74 2d 6c 69 73 74 2c 20 77 68 69 63 68 20 6d 61  t-list, which ma
2120: 79 20 61 6c 73 6f 20 20 69 6e 63 6c 75 64 65 20  y also  include 
2130: 20 74 68 65 20 20 73 69 7a 65 20 20 6f 66 20 20   the  size  of  
2140: 61 6e 79 0a 73 74 72 75 63 74 75 72 65 20 61 72  any.structure ar
2150: 67 75 6d 65 6e 74 73 2e 0a 3c 50 3e 0a 54 68 65  guments..<P>.The
2160: 20 64 65 63 69 73 69 6f 6e 20 77 68 65 74 68 65   decision whethe
2170: 72 20 61 20 73 74 72 75 63 74 20 69 73 20 74 6f  r a struct is to
2180: 20 62 65 20 72 65 74 75 72 6e 65 64 20 69 6e 20   be returned in 
2190: 72 65 67 69 73 74 65 72 73 20 6f 72 20 69 6e 20  registers or in 
21a0: 6d 65 6d 6f 72 79 0a 63 6f 6e 73 69 64 65 72 73  memory.considers
21b0: 20 6f 6e 6c 79 20 74 68 65 20 73 74 72 75 63 74   only the struct
21c0: 27 73 20 73 69 7a 65 20 61 6e 64 20 61 6c 69 67  's size and alig
21d0: 6e 6d 65 6e 74 2e 20 54 68 69 73 20 69 73 20 69  nment. This is i
21e0: 6e 61 63 63 75 72 61 74 65 3a 20 66 6f 72 0a 65  naccurate: for.e
21f0: 78 61 6d 70 6c 65 2c 20 67 63 63 20 6f 6e 20 6d  xample, gcc on m
2200: 36 38 6b 2d 6e 65 78 74 20 72 65 74 75 72 6e 73  68k-next returns
2210: 0a 3c 43 4f 44 45 3e 73 74 72 75 63 74 20 7b 20  .<CODE>struct { 
2220: 63 68 61 72 20 61 2c 62 2c 63 3b 20 7d 3c 2f 43  char a,b,c; }</C
2230: 4f 44 45 3e 0a 69 6e 20 72 65 67 69 73 74 65 72  ODE>.in register
2240: 73 20 61 6e 64 0a 3c 43 4f 44 45 3e 73 74 72 75  s and.<CODE>stru
2250: 63 74 20 7b 20 63 68 61 72 20 61 5b 33 5d 3b 20  ct { char a[3]; 
2260: 7d 3c 2f 43 4f 44 45 3e 0a 69 6e 20 6d 65 6d 6f  }</CODE>.in memo
2270: 72 79 2c 20 61 6c 74 68 6f 75 67 68 20 62 6f 74  ry, although bot
2280: 68 20 74 79 70 65 73 20 68 61 76 65 20 74 68 65  h types have the
2290: 20 73 61 6d 65 20 73 69 7a 65 20 61 6e 64 20 74   same size and t
22a0: 68 65 20 73 61 6d 65 20 61 6c 69 67 6e 6d 65 6e  he same alignmen
22b0: 74 2e 0a 3c 50 3e 0a 3c 43 4f 44 45 3e 26 6c 74  t..<P>.<CODE>&lt
22c0: 3b 76 61 63 61 6c 6c 2e 68 26 67 74 3b 3c 2f 43  ;vacall.h&gt;</C
22d0: 4f 44 45 3e 20 63 61 6e 6e 6f 74 20 62 65 20 69  ODE> cannot be i
22e0: 6e 63 6c 75 64 65 64 20 20 77 68 65 6e 20 3c 43  ncluded  when <C
22f0: 4f 44 45 3e 26 6c 74 3b 76 61 72 61 72 67 73 2e  ODE>&lt;varargs.
2300: 68 26 67 74 3b 3c 2f 43 4f 44 45 3e 20 20 6f 72  h&gt;</CODE>  or
2310: 0a 3c 43 4f 44 45 3e 26 6c 74 3b 73 74 64 61 72  .<CODE>&lt;stdar
2320: 67 2e 68 26 67 74 3b 3c 2f 43 4f 44 45 3e 20 69  g.h&gt;</CODE> i
2330: 73 20 69 6e 63 6c 75 64 65 64 2e 20 20 28 4e 61  s included.  (Na
2340: 6d 65 20 63 6c 61 73 68 20 66 6f 72 20 3c 43 4f  me clash for <CO
2350: 44 45 3e 76 61 5f 61 6c 69 73 74 3c 2f 43 4f 44  DE>va_alist</COD
2360: 45 3e 2e 29 0a 3c 50 3e 0a 54 68 65 20 61 72 67  E>.).<P>.The arg
2370: 75 6d 65 6e 74 20 6c 69 73 74 20 63 61 6e 20 6f  ument list can o
2380: 6e 6c 79 20 62 65 20 77 61 6c 6b 65 64 20 6f 6e  nly be walked on
2390: 63 65 2e 0a 3c 50 3e 0a 54 68 65 20 20 75 73 65  ce..<P>.The  use
23a0: 20 20 6f 66 20 20 74 68 65 20 20 67 6c 6f 62 61    of  the  globa
23b0: 6c 20 20 76 61 72 69 61 62 6c 65 20 3c 43 4f 44  l  variable <COD
23c0: 45 3e 76 61 63 61 6c 6c 5f 66 75 6e 63 74 69 6f  E>vacall_functio
23d0: 6e 3c 2f 43 4f 44 45 3e 20 69 73 20 6e 6f 74 0a  n</CODE> is not.
23e0: 72 65 65 6e 74 72 61 6e 74 2e 20 54 68 69 73 20  reentrant. This 
23f0: 69 73 20 66 69 78 65 64 20 69 6e 20 74 68 65 20  is fixed in the 
2400: 3c 41 20 48 52 45 46 3d 22 63 61 6c 6c 62 61 63  <A HREF="callbac
2410: 6b 28 33 29 22 3e 3c 43 4f 44 45 3e 3c 42 3e 63  k(3)"><CODE><B>c
2420: 61 6c 6c 62 61 63 6b 3c 2f 42 3e 3c 2f 43 4f 44  allback</B></COD
2430: 45 3e 3c 2f 41 3e 28 33 29 20 70 61 63 6b 61 67  E></A>(3) packag
2440: 65 2e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 50 6f 72  e...<A NAME="Por
2450: 74 69 6e 67 22 3e 0a 3c 48 32 3e 50 6f 72 74 69  ting">.<H2>Porti
2460: 6e 67 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 4b 6e  ng</H2>.</A>..Kn
2470: 6f 77 6c 65 64 67 65 20 61 62 6f 75 74 20 61 72  owledge about ar
2480: 67 75 6d 65 6e 74 20 70 61 73 73 69 6e 67 20 63  gument passing c
2490: 6f 6e 76 65 6e 74 69 6f 6e 73 20 63 61 6e 20 62  onventions can b
24a0: 65 20 20 66 6f 75 6e 64 0a 69 6e 20 20 74 68 65  e  found.in  the
24b0: 20 20 67 63 63 20 73 6f 75 72 63 65 2c 20 66 69    gcc source, fi
24c0: 6c 65 0a 3c 53 41 4d 50 3e 67 63 63 2d 32 2e 36  le.<SAMP>gcc-2.6
24d0: 2e 33 2f 63 6f 6e 66 69 67 2f 3c 56 41 52 3e 63  .3/config/<VAR>c
24e0: 70 75 3c 2f 56 41 52 3e 2f 3c 56 41 52 3e 63 70  pu</VAR>/<VAR>cp
24f0: 75 3c 2f 56 41 52 3e 2e 68 3c 2f 53 41 4d 50 3e  u</VAR>.h</SAMP>
2500: 2c 0a 73 65 63 74 69 6f 6e 20 22 53 74 61 63 6b  ,.section "Stack
2510: 20 6c 61 79 6f 75 74 3b 20 66 75 6e 63 74 69 6f   layout; functio
2520: 6e 20 65 6e 74 72 79 2c 20 65 78 69 74 20 61 6e  n entry, exit an
2530: 64 20 63 61 6c 6c 69 6e 67 2e 22 0a 3c 50 3e 0a  d calling.".<P>.
2540: 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69  The implementati
2550: 6f 6e 20 6f 66 20 76 61 72 61 72 67 73 20 66 6f  on of varargs fo
2560: 72 20 67 63 63 20 63 61 6e 20 62 65 20 66 6f 75  r gcc can be fou
2570: 6e 64 20 69 6e 20 20 74 68 65 0a 67 63 63 20 73  nd in  the.gcc s
2580: 6f 75 72 63 65 2c 20 66 69 6c 65 73 20 3c 53 41  ource, files <SA
2590: 4d 50 3e 67 63 63 2d 32 2e 36 2e 33 2f 67 69 6e  MP>gcc-2.6.3/gin
25a0: 63 6c 75 64 65 2f 76 61 2a 2e 68 3c 2f 53 41 4d  clude/va*.h</SAM
25b0: 50 3e 2e 0a 3c 50 3e 0a 67 63 63 27 73 20 20 3c  P>..<P>.gcc's  <
25c0: 43 4f 44 45 3e 5f 5f 62 75 69 6c 74 69 6e 5f 73  CODE>__builtin_s
25d0: 61 76 65 72 65 67 73 28 29 3c 2f 43 4f 44 45 3e  averegs()</CODE>
25e0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 64 65 66   function is def
25f0: 69 6e 65 64 20 69 6e 20 74 68 65 20 67 63 63 0a  ined in the gcc.
2600: 73 6f 75 72 63 65 2c 20 66 69 6c 65 20 3c 53 41  source, file <SA
2610: 4d 50 3e 67 63 63 2d 32 2e 36 2e 33 2f 6c 69 62  MP>gcc-2.6.3/lib
2620: 67 63 63 32 2e 63 3c 2f 53 41 4d 50 3e 2e 0a 3c  gcc2.c</SAMP>..<
2630: 50 3e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 41 75 74  P>..<A NAME="Aut
2640: 68 6f 72 22 3e 0a 3c 48 32 3e 41 75 74 68 6f 72  hor">.<H2>Author
2650: 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 42 72 75 6e  </H2>.</A>..Brun
2660: 6f 20 48 61 69 62 6c 65 20 26 6c 74 3b 62 72 75  o Haible &lt;bru
2670: 6e 6f 40 63 6c 69 73 70 2e 6f 72 67 26 67 74 3b  no@clisp.org&gt;
2680: 0a 0a 3c 41 20 4e 41 4d 45 3d 22 41 63 6b 6e 6f  ..<A NAME="Ackno
2690: 77 6c 65 64 67 65 6d 65 6e 74 73 22 3e 0a 3c 48  wledgements">.<H
26a0: 32 3e 41 63 6b 6e 6f 77 6c 65 64 67 65 6d 65 6e  2>Acknowledgemen
26b0: 74 73 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 4d 61  ts</H2>.</A>..Ma
26c0: 6e 79 20 69 64 65 61 73 20 61 6e 64 20 61 20 6c  ny ideas and a l
26d0: 6f 74 20 6f 66 20 63 6f 64 65 20 77 65 72 65 20  ot of code were 
26e0: 20 63 72 69 62 62 65 64 20 20 66 72 6f 6d 20 20   cribbed  from  
26f0: 74 68 65 20 20 67 63 63 0a 73 6f 75 72 63 65 2e  the  gcc.source.
2700: 0a 3c 50 3e 0a 0a 3c 48 52 3e 0a 0a 3c 41 44 44  .<P>..<HR>..<ADD
2710: 52 45 53 53 3e 56 41 43 41 4c 4c 20 6d 61 6e 75  RESS>VACALL manu
2720: 61 6c 20 70 61 67 65 3c 42 52 3e 0a 42 72 75 6e  al page<BR>.Brun
2730: 6f 20 48 61 69 62 6c 65 20 26 6c 74 3b 62 72 75  o Haible &lt;bru
2740: 6e 6f 40 63 6c 69 73 70 2e 6f 72 67 26 67 74 3b  no@clisp.org&gt;
2750: 0a 3c 2f 41 44 44 52 45 53 53 3e 0a 3c 50 3e 0a  .</ADDRESS>.<P>.
2760: 4c 61 73 74 20 6d 6f 64 69 66 69 65 64 3a 20 31  Last modified: 1
2770: 34 20 4a 61 6e 75 61 72 79 20 32 30 30 31 2e 0a  4 January 2001..
2780: 0a 3c 2f 42 4f 44 59 3e 0a 0a                    .</BODY>..