Re: Pb de compilation sous Mandrake 8.1

Page principale

Répondre à ce message
Auteur: Xavier SIRVENT
Date:  
CC: guilde
Sujet: Re: Pb de compilation sous Mandrake 8.1
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);
}
                                                                                }