Comment puis-je écrire (si c’est possible …) une fonction qui prend un nombre inconnu de parameters dans C99 (le type de retour est constant)?
Oui, vous pouvez le faire en C en utilisant ce que l’on appelle les fonctions variadiques. Les fonctions standard printf()
et scanf()
font, par exemple.
Placez les points de suspension (trois points) comme dernier paramètre où vous souhaitez définir le nombre variable de parameters.
Pour accéder aux parameters, incluez l’en-tête
:
#include
Et puis vous avez un type spécial va_list
qui vous donne la liste des arguments passés et vous pouvez utiliser les va_start
, va_arg
et va_end
pour parcourir la liste des arguments.
Par exemple:
#include int myfunc(int count, ...) { va_list list; int j = 0; va_start(list, count); for(j=0; j
Exemple d'appel:
myfunc(4, -9, 12, 43, 217);
Un exemple complet peut être trouvé sur Wikipedia .
Le paramètre count
de l'exemple indique à la fonction appelée le nombre d'arguments passés. printf()
et scanf()
découvrent via la chaîne de formatage, mais un simple argument de count
peut également le faire. Parfois, le code utilise une valeur sentinel, telle qu'un entier négatif ou un pointeur nul (voir execl()
par exemple).
Le format avec l’exemple existant:
int yourFunc ( int abc, ... ) { //your code here }