|
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.
|
|