Macro de biblioteca C - va_arg ()

Descripción

La macro de la biblioteca C type va_arg(va_list ap, type) recupera el siguiente argumento en la lista de parámetros de la función con type. Esto no determina si el argumento recuperado es el último argumento pasado a la función.

Declaración

A continuación se muestra la declaración de la macro va_arg ().

type va_arg(va_list ap, type)

Parámetros

  • ap- Este es el objeto de tipo va_list con información sobre los argumentos adicionales y su estado de recuperación. Este objeto debe inicializarse mediante una llamada inicial a va_start antes de la primera llamada a va_arg.

  • type- Este es un nombre de tipo. Este nombre de tipo se utiliza como el tipo de expresión a la que se expande esta macro.

Valor devuelto

Esta macro devuelve el siguiente argumento adicional como una expresión de tipo type.

Ejemplo

El siguiente ejemplo muestra el uso de la macro va_arg ().

#include <stdarg.h>
#include <stdio.h>

int sum(int, ...);

int main () {
   printf("Sum of 15 and 56 = %d\n",  sum(2, 15, 56) );
   return 0;
}

int sum(int num_args, ...) {
   int val = 0;
   va_list ap;
   int i;

   va_start(ap, num_args);
   for(i = 0; i < num_args; i++) {
      val += va_arg(ap, int);
   }
   va_end(ap);
 
   return val;
}

Compilemos y ejecutemos el programa anterior para producir el siguiente resultado:

Sum of 15 and 56 = 71