Node:Variadic Prototypes, Next:Receiving Arguments, Up:How Variadic
A function that accepts a variable number of arguments must be declared
with a prototype that says so. You write the fixed arguments as usual,
and then tack on ...
to indicate the possibility of
additional arguments. The syntax of ISO C requires at least one fixed
argument before the ...
. For example,
int func (const char *a, int b, ...) { ... }
defines a function func
which returns an int
and takes two
required arguments, a const char *
and an int
. These are
followed by any number of anonymous arguments.
Portability note: For some C compilers, the last required
argument must not be declared register
in the function
definition. Furthermore, this argument's type must be
self-promoting: that is, the default promotions must not change
its type. This rules out array and function types, as well as
float
, char
(whether signed or not) and short int
(whether signed or not). This is actually an ISO C requirement.