Macro de bibliothèque C - va_arg ()

La description

La macro de la bibliothèque C type va_arg(va_list ap, type) récupère l'argument suivant dans la liste des paramètres de la fonction avec type. Cela ne détermine pas si l'argument récupéré est le dernier argument passé à la fonction.

Déclaration

Voici la déclaration de la macro va_arg ().

type va_arg(va_list ap, type)

Paramètres

  • ap- C'est l'objet de type va_list avec des informations sur les arguments supplémentaires et leur état de récupération. Cet objet doit être initialisé par un appel initial à va_start avant le premier appel à va_arg.

  • type- Ceci est un nom de type. Ce nom de type est utilisé comme type de l'expression, cette macro se développe.

Valeur de retour

Cette macro renvoie le prochain argument supplémentaire en tant qu'expression de type type.

Exemple

L'exemple suivant montre l'utilisation 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;
}

Compilons et exécutons le programme ci-dessus pour produire le résultat suivant -

Sum of 15 and 56 = 71