Fonction avec un nombre inconnu de parameters en C

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 }