Fonctions variadiques
Une fonction est variadique si le nombre d'arguments est quelconque. Comme par exemple printf
!
Motivation
On peut avoir envie de fonctions variadiques comme pour calculer le maximum :
maximum(1, 2)
maximum(1, 2, 9, 5)
stdarg.h
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#define SENTINEL -1
/**
* \param the parameters are ints. They should be positive integers except the last number should be SENTINEL.
* \result the maximum about the numbers
* */
int maximum( int first, ... ) {
int max = first;
va_list parametersInfos;
va_start( parametersInfos, first );
while( true ) {
int current = (int) va_arg( parametersInfos, int );
if ( current == SENTINEL) break;
if ( current > max )
max = current;
}
va_end( parametersInfos );
return max;
}
int main() {
printf( "%d\n", maximum( 2, 11, 5, SENTINEL ));
return EXIT_SUCCESS;
}