va_start
De cppreference.com
| 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.
Parametros
| ap | - | una instancia del tipo va_list |
| parmN | - | el parámetro denominado que precede al primer parámetro de la variable |
Valor expandido
(ninguno)
Ejemplo
Ejecuta este código
#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
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
Véase también
| accede al siguiente argumento de función variádica (macro de función) | |
(C99) |
hace una copia de los argumentos de las funciones variádicas (macro de función) |
| finaliza la transferencia de los argumentos de la función variádica (macro de función) | |
| contiene la información necesaria para va_start, va_arg, va_end y va_copy (typedef) | |
Documentación de C++ para va_start
| |