Node:Variadic Prototypes, Next:, Up:How Variadic



Syntax for Variable Arguments

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.