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.