va_end( aVaList );
Cette macro (attention, ce n'est pas une fonction) permet de libérer les ressources acquises durant un parcours des paramètres d'une fonction à nombre variable de paramètres.
va_list
que la macro va initialiser.
L'exemple proposé ci-dessous permet de trouver le plus grand entier positif parmi la liste de valeurs passées en paramètre. Le paramètre nommé correspond à la première valeur à comparer. Pour terminer la liste de paramètres, il vous est demandé de placer la valeur négative -1.
#include <stdarg.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> int maximum( int first, ... ) { int max = first; va_list parametersInfos; /* Initialize the va_list structure */ va_start( parametersInfos, first ); while( true ) { /* Extraction of the next integer */ int current = (int) va_arg( parametersInfos, int ); if ( current == -1 ) break; if ( current > max ) { max = current; } } /* Release va_list resources */ va_end( parametersInfos ); return max; } int main( int argc, char * argv[] ) { int result = maximum( 2, 11, 5, -1 ); printf( "maximum( 2, 11, 5, -1 ) == %d\n", result ); /* 11 */ result = maximum( 3, 8, 12, 1, -1 ); printf( "maximum( 3, 8, 12, 1, -1 ) == %d\n", result ); /* 12 */ return EXIT_SUCCESS; }
Attention, si vous placez une valeur -1 avant le dernier de vos paramètres, les valeurs suivantes seront tout simplement ignorées.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :