stdarg.h


Macro va_start ANSI C

void va_start(va_list pa, paramN);

Será invocada antes de cualquier acceso a los argumentos sin nombre. La macro va_start inicializa pa para uso posterior en va_arg y va_end. El parámetro paramN es el identificador del parámetro más a la derecha en la lista de parámetros de variables en la definición de la función (justo antes de ,...). Si el parámetro paramN es declarado con la clase de almacenamiento register, con un tipo de función o array, o con un tipo que no es compatible con el tipo que resulta después de la aplicación de las promociones de argumentos por defecto, el comportamiento no está definido.

Valor de retorno:

La macro va_start no retorna ningún valor.

Ejemplo:

#define __dj_va_rounded_size(T)  \
      (((sizeof (T) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) 
#define va_start(ap, last_arg) \
      (ap = ((va_list) __builtin_next_arg (last_arg)))
DJGPP
#define __size(x) ((sizeof(x)+sizeof(int)-1) & ~(sizeof(int)-1)) 
#define va_start(ap, parmN) ((void)((ap) = \
      (va_list)((char _FAR *)(&parmN)+__size(parmN))))
Borland
#define __va_argsiz(t) \ 
      (((sizeof(t) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) 
#define va_start(ap, pN) \
      ((ap) = ((va_list) (&pN) + __va_argsiz(pN)))
Dev-C++