Macro libreria C - va_arg ()

Descrizione

La macro della libreria C. type va_arg(va_list ap, type) recupera l'argomento successivo nell'elenco dei parametri della funzione con type. Ciò non determina se l'argomento recuperato è l'ultimo argomento passato alla funzione.

Dichiarazione

Di seguito è riportata la dichiarazione per la macro va_arg ().

type va_arg(va_list ap, type)

Parametri

  • ap- Questo è l'oggetto di tipo va_list con informazioni sugli argomenti aggiuntivi e sul loro stato di recupero. Questo oggetto dovrebbe essere inizializzato da una chiamata iniziale a va_start prima della prima chiamata a va_arg.

  • type- Questo è un nome di tipo. Questo nome di tipo viene utilizzato come tipo di espressione, questa macro si espande in.

Valore di ritorno

Questa macro restituisce il successivo argomento aggiuntivo come espressione di tipo type.

Esempio

Il seguente esempio mostra l'utilizzo della 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;
}

Compiliamo ed eseguiamo il programma sopra per produrre il seguente risultato:

Sum of 15 and 56 = 71