Los
parámetros se pasan usando la pila, (esto es siempre así,
pero normalmente no tendremos que prestar artención a éste
hecho). Además es el programador el responsable de decidir
el tipo de cada argumento, lo cual limita bastante el uso de esta
forma de pasar parámetros.
Para
hacer más fácil la vida de los programadores, se incluyen
algunas macros en el fichero de cabecera "stdarg.h",
estas macros permiten manejar "fácilmente" las
listas de argumentos desconocidos.
Tipos
En
el fichero de cabecera "stdarg.h" de define un tipo: va_list.
Será necesario declarar una variable de este tipo para tener
acceso a la lista de parámetros.
Macros:
También se definen tres macros: va_start, va_arg
y va_end.
void
va_start(va_list ap, ultimo);
Ajusta
el valor de "ap" para que apunte al primer parámetro
de la lista. <ultimo> es el identificador del último
parámetro fijo antes de comenzar la lista.
tipo
va_arg(va_list ap, tipo);
Devuelve
el siguiente valor de la lista de parámetros, "ap"
debe ser la misma variable que se actualizó previamente con
"va_start", "tipo" es el tipo
del parámetro que se tomará de la lista.
void
va_end(va_list va);
Permite
a la función retornar normalmente, restaurando el estado
de la pila, esto es necesario porque algunas de las macros anteriores
pueden modificarla, haciendo que el programa termine anormalmente.
|