(libc.info.gz) Old Varargs

Info Catalog (libc.info.gz) Argument Macros (libc.info.gz) How Variadic
 
 A.2.3.1 Old-Style Variadic Functions
 ....................................
 
 Before ISO C, programmers used a slightly different facility for
 writing variadic functions.  The GNU C compiler still supports it;
 currently, it is more portable than the ISO C facility, since support
 for ISO C is still not universal.  The header file which defines the
 old-fashioned variadic facility is called `varargs.h'.
 
    Using `varargs.h' is almost the same as using `stdarg.h'.  There is
 no difference in how you call a variadic function; see  Calling
 Variadics.  The only difference is in how you define them.  First of
 all, you must use old-style non-prototype syntax, like this:
 
      tree
      build (va_alist)
           va_dcl
      {
 
    Secondly, you must give `va_start' only one argument, like this:
 
        va_list p;
        va_start (p);
 
    These are the special macros used for defining old-style variadic
 functions:
 
  -- Macro: va_alist
      This macro stands for the argument name list required in a variadic
      function.
 
  -- Macro: va_dcl
      This macro declares the implicit argument or arguments for a
      variadic function.
 
  -- Macro: void va_start (va_list AP)
      This macro, as defined in `varargs.h', initializes the argument
      pointer variable AP to point to the first argument of the current
      function.
 
    The other argument macros, `va_arg' and `va_end', are the same in
 `varargs.h' as in `stdarg.h'; see  Argument Macros, for details.
 
    It does not work to include both `varargs.h' and `stdarg.h' in the
 same compilation; they define `va_start' in conflicting ways.
 
Info Catalog (libc.info.gz) Argument Macros (libc.info.gz) How Variadic
automatically generated by info2html