Article     Discussion     Modifier     Historique     Forums     Salon IRC

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()).

 

Rechercher
Installer l'extension de recherche Plus d'informations

 

Comprendre
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin

 

Partager
La connaissance est la seule chose qui s'accroit lorsqu'on la partage. - Sacha Boudjema

 

Créer
L'imagination est plus importante que la connaissance. - Albert Einstein

 

 

Le wiki en images Le wiki en images Image du mois: «Snowball: un prototype de jeu développé avec NeL.