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 section Calling Variadic Functions. 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
just one argument, like this:
va_list p; va_start (p);
These are the special macros used for defining old-style variadic functions:
The other argument macros, va_arg
and va_end
, are the same
in `varargs.h' as in `stdarg.h'; see section Argument Access 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.
Go to the first, previous, next, last section, table of contents.