BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 15 Sobrecarga
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.