Standard C++ Library Reference ISO/IEC (VERSION3)

string (assuming that the existing string is stored in an object large enough to hold the resulting
string).
#define va_arg(va_list ap, Ty) <rvalue of type Ty>
#define va_end(va_list ap) <void expression>
#define va_start(va_list ap, last-par) <void expression>
typedef do-type va_list;
va_arg
#define va_arg(va_list ap, Ty) <rvalue of type Ty>
The macro yields the value of the next argument in order, specified by the context information
designated by ap. The additional argument must be of object type Ty after applying the rules
for promoting arguments in the absence of a function prototype.
va_end
#define va_end(va_list ap) <void expression>
The macro performs any cleanup necessary, after processing the context information designated
by ap, so that the function can return.
va_list
typedef do-type va_list;
The type is the object type do-type that you declare to hold the context information
initialized by va_start and used by va_arg to access additional unnamed arguments.
va_start
#define va_start(va_list ap, last-par) <void expression>
The macro stores initial context information in the object designated by ap. last-par is the
name of the last parameter you declare. For example, last-par is b for the function declared
as int f(int a, int b, ...). The last parameter must not have register storage
class, and it must have a type that is not changed by the translator. It cannot have:
an array type
a function type
type float
any integer type that changes when promoted