Les exemples qui suivent présentent quelques méthodes pour passer des paramètres de manières optionels. Ainsi il est possible, pour une fonction d’avoir des comportements différents en fonction des paramètres passés.
1er exemple, utilisation de la fonction vsprintf.
void Write(char *fmt, ...)
{
static char tmp[10000];
vsprintf(tmp, fmt, (void *)(&fmt + 1));
fprintf(stderr, "%s", tmp);
}
|
2ème exemple, plus complexe avec l'utilisation de la liste des arguments.
#include <stdio.h>
#include <stdarg.h>
void Menu (char *tt, ...)
{
va_list lstMenu;
char *txt = (char *)1;
va_start (lstMenu, tt);
while (txt != NULL)
{
txt = (char *)va_arg(lstMenu, long);
printf ("%sn", txt);
}
va_end (lstMenu);
}
void main (void)
{
Menu ("tt", "titre 1", "titre 2", "titre 3");
}
| |