va_start
|
Definido en el encabezado
<stdarg.h>
|
||
|
void
va_start
(
va_list ap, parmN
)
;
|
(hasta C23) | |
|
void
va_start
(
va_list ap, ...
)
;
|
(desde C23) | |
La macro
va_start
permite acceder a los argumentos variables
que siguen al argumento nombrado
parmN
(hasta C23)
.
va_start
deberá ser invocado con una instancia de un objeto
va_list
válido
ap
antes de cualquier llamada a
va_arg
.
|
Si
|
(until C23) |
|
Solo se evalúa el primer argumento pasado a
|
(since C23) |
Contenidos |
Parámetros
| ap | - | una instancia del tipo va_list |
| parmN | - | el parámetro nombrado que precede al primer parámetro variable |
Valor expandido
(ninguno)
Ejemplo
#include <stdio.h> #include <stdarg.h> int add_nums_C99(int count, ...) { int result = 0; va_list args; va_start(args, count); // count puede omitirse desde C23 for (int i = 0; i < count; ++i) { result += va_arg(args, int); } va_end(args); return result; } #if __STDC_VERSION__ > 201710L // Igual que arriba, válido desde C23 int add_nums_C23(...) { int result = 0; va_list args; va_start(args); int count = va_arg(args, int); for (int i = 0; i < count; ++i) { result += va_arg(args, int); } va_end(args); return result; } #endif int main(void) { printf("%d\n", add_nums_C99(4, 25, 25, 50, 50)); #if __STDC_VERSION__ > 201710L printf("%d\n", add_nums_C23(4, 25, 25, 50, 50)); #endif }
Salida posible:
150 150
Referencias
- Estándar C17 (ISO/IEC 9899:2018):
-
- 7.16.1.4 La macro va_start (p: 198-199)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 7.16.1.4 La macro va_start (p: 271-272)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 7.15.1.4 La macro va_start (p: 251-252)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 4.8.1.1 La macro va_start
Véase también
|
accede al siguiente argumento de función variádica
(macro de función) |
|
|
(C99)
|
realiza una copia de los argumentos de función variádica
(macro de función) |
|
finaliza el recorrido de los argumentos de 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
|
|