Edgar Bonet wrote:
>Le Friday 30 November, Xavier SIRVENT a écrit :
>
>>Sans [Dans ?] le man de la fonction va_arg, il y a l'exemple suivant:
>>
>>void foo (char *fmt, ...)
>>{ [...] }
>>
>>Impossible de le compiler sous Mandrake 8.0 ou 8.1 avec le compilo gcc
>>2.96
>>
>
>Tu as bien inclu <stdarg.h> ? Tu as quoi comme message d'erreur ?
>
>Edgar.
>
C'est vrai, les messages d'erreur, ca peut aider:
gcc -c va_arg.cpp
va_arg.cpp: In function `void foo (char *, ...)':
va_arg.cpp:26: `char' is promoted to `int' when passed through `...'
va_arg.cpp:26: (so you should pass `int' not `char' to `va_arg')
va_arg.cpp: At top level:
va_arg.cpp:33: parse error before `}'
Je me rend compte aussi que je n'ai pas mis le fichier en entier dans
mon dernier mail et qu'il manque les includes
Je l'envoi en attachement.
Voilou!!!
Xavier
#include <stdio.h>
#include <stdarg.h>
void foo (char *fmt, ...)
{
va_list ap;
int d;
char c, *p, *s;
va_start (ap, fmt);
while (*fmt)
{
switch (*fmt ++)
{
case 's': /* chaîne */
s = va_arg (ap, char *);
printf ("chaine %s\n", s);
break;
case 'd': /* entier */
d = va_arg (ap, int);
printf ("int %d\n", d);
break;
case 'c': /* caractère */
c = va_arg (ap, char);
printf ("char %c\n", c);
break;
}
}
va_end (ap);
}
}