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 9 Librerías Estándar
Teoría: Argumentos variables <stdarg.h>

va_list
Un tipo adecuado para contener información necesaria para las macros va_start, va_arg, y va_end.Si desea tener acceso a los distintos argumentos, la función llamada declarará un objeto (llamada en esta sección ap) con el tipo va_list. El objeto ap puede ser pasado como argumento a otra función; si dicha función invoca la macro va_arg con el parámetro ap, el valor de ap en la función llamada es determinada y será pasada a la macro va_endantes de cualquier otra referencia ap.

void va_start(va_list ap, parmN);
Será invocada antes de cualquier acceso a argumentos sin nombre. La macro va_start inicializa apuntador para uso subsecuente por las macros va_arg y va_end.El parámetro parmN es el identificador del parámetro más a la derecha de la lista de parámetros variables en la definiciónde función(una justo antes de la coma,...) Si se declara el parámetro parmN con la clase de almacenamiento register, con un tipo de función o arreglo, o con un tipo que no sea compatible con el tipo que resulte después de la aplicación de las promociones de argumento por omisión, el comportamiento quedará indefinido.

tipo va_arg(va_list, tipo);
Se expande a una expresión que tiene el tipo y el valor del siguiente argumento dentro de la llamada. El parámetro ap será el mismo que el de va_list ap inicializado por va_start. Cada invocación de va_arg modifica ap de tal forma ,que los valores de argumentos sucesivos sean regresados en orden. El parámetro type es el nombre del tipo definido de tal forma, que el tipo de un apuntador a un objetoque tiene el tipo especificado se pueda obtener mediante la colocación postfija de un * a type. Si no existe un argumento siguiente o si type no es compatible con el tipo el siguiente argumento (como promovido de acuerdo con las promociones de argumento por omisión), el comportamiento queda indefinido. La primera invocación de la macro va_arg después de la macro va_start devuelve el valor del argumento después del especificado por parmN. Invocaciones subsiguientes devuelven en sucesión los valores de los argumentos siguientes.

void va_end(va_list ap);
Facilita el regreso normal de una función cuya lista de argumentos variables fué referida mediante la expansión de va_start que inicializó va_list ap. La macro va_end puede modificar de tal forma ap, que ya no sea utilizable (sin una invocación inmediata de va_start).Si no existe una invocación correspondiente de la macro va_start o si la macro va_end no se invoca antes del regreso, el comportamiento queda indefinido.