Espacios de nombres
Variantes
Acciones

va_start

De cppreference.com
< c‎ | variadic
Definido en el archivo de encabezado <stdarg.h>
void va_start( va_list ap, parmN );

La macro va_start permite el acceso a los argumentos de la variable que siguen al argumento llamado parmN.

va_start debe ser invocado con una instancia a un objeto va_list válido ap antes de cualquier llamada a va_arg.

Si parmN se declara con el especificador de clase de almacenamiento de registro, con un tipo de array, con un tipo de función, o con un tipo no compatible con el tipo que resulta de las promociones de argumentos por defecto, el comportamiento sera indefinido.

Contenido

[editar] Parametros

ap - una instancia del tipo va_list
parmN - el parámetro denominado que precede al primer parámetro de la variable

[editar] Valor expandido

(ninguno)

[editar] Ejemplo

#include <stdio.h>
#include <stdarg.h>
 
int add_nums(int count, ...) 
{
    int result = 0;
    va_list args;
    va_start(args, count);
    for (int i = 0; i < count; ++i) {
        result += va_arg(args, int);
    }
    va_end(args);
    return result;
}
 
int main(void) 
{
    printf("%d\n", add_nums(4, 25, 25, 50, 50));
}

Posible salida:

150

[editar] Referencias

  • Standard C11 (ISO/IEC 9899:2011):
  • 7.16.1.4 The va_start macro (p: 271-272)
  • Standard C99 (ISO/IEC 9899:1999):
  • 7.15.1.4 The va_start macro (p: 251-252)
  • Standard C89/C90 (ISO/IEC 9899:1990):
  • 4.8.1.1 The va_start macro

[editar] Véase también

accede al siguiente argumento de función variádica
(macro de función) [editar]
hace una copia de los argumentos de las funciones variádicas
(macro de función) [editar]
finaliza la transferencia de los argumentos de la función variádica
(macro de función) [editar]
contiene la información necesaria para va_start, va_arg, va_end y va_copy
(typedef) [editar]
Documentación de C++ para va_start