Teoría:
Funciones con número de argumentos variable
Uso de las macros
para leer la lista de parámetros:
funcion(<tipo>
<id1> [, <tipo> <id2>...], ...)
{
va_list ar;//
Declarar una variable para manejar la lista
va_start(ar, <idn>); // <idn>
debe ser el nombre del último parámetro antes de ...
<tipo> <arg>; // <arg>
es una variable para recoger un parámetro
//
<tipo> debe ser el mismo que es de <arg>
while((<arg> = va_arg(ar, <tipo>)) != 0) {
// Manejar <arg>
}
va_end(ar); // Normalizar la pila
}
Hay
que usar un sistema que permita determinar cúal es el
último valor de la lista de parámetros.
Una forma es que el último valor de la lista de parámetros
en la llamada a la función sea un 0, (o más en general,
un valor conocido).
También puede hacerse que uno de los parámetros conocidos
sea la cuenta de los parámetros desconocidos.
Además es necesario que el programador conozca el tipo
de cada parámetro, para así poder leerlos adecuadamente,
lo normal es que todos los parámetros sean del mismo tipo,
o que se use un mecanismo como la de "printf",
donde analizando el primer parámetro se pueden deducir el
tipo de todos los demás. Este último sistema también
sirve para saber el número de parámetros.