Les fonctions avec un nombre d'arguments variable
Un article de Games Creators Network.
Il est parfois nécessaire de concevoir des fonctions avec un nombre d'argument variable. La syntaxe de base du C n'autorise pas cette possibilité, il est donc nécessaire d'utiliser la bibliothèque standard et plus particulièrement le fichier stdarg.h qui contient un ensemble de macro qui vont remédier à ce manque.
La conception de cette fonction passe par plusieurs étapes.
Tout d'abord, inclure le fichier stdarg.h
#include <stdarg.h>Puis, il faut écrire la fonction en remplaçant les paramètres variables par ...
void mafonction(int n_param, ...) { }
Attention: il est nécessaire d'avoir au moins un argument fixe dans ce type de fonction!
La récupération des arguments variables est alors comparable au parcours d'une liste:
void mafonction(int n_param, ...) { int i; va_list liste; va_start(liste, n_param); for(i=0;i<n_param;i++) printf("%d\n",va_arg(liste, int)); va_end(liste); }
L'appel de la fonction peut alors se faire de cette façon:
mafonction(1,5); mafonction(3,5,5,5);
Comme on peut le constater, cette syntaxe pose deux inconvénients:
- au moins un paramètre doit être fixé
- on doit obligatoirement connaître le type des arguments variables par avance ou bien avoir un moyen de les déduire (comme la chaîne utilisée pour le formatage dans la fonction printf()).

