Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre éclairé Avatar de awalter1
    Inscrit en
    août 2004
    Messages
    888
    Détails du profil
    Informations forums :
    Inscription : août 2004
    Messages : 888
    Points : 347
    Points
    347

    Par défaut warning compilation sur tableau de pointeurs de fonctions

    Bonjour,
    Avec le code suivant, j'ai un warning de compilation :
    Code :
    dset_hmi_main.c:8: warning: initialization from incompatible pointer type
    code source :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    void add_int_trace(char * message)
    {
       printf("message=<%s>\n",message)
    }
     
    int (*ptr_list_proc[1])() = {
          add_in_fic_trace
    };
     
    int main(argc,argv)
       int argc;
       char *argv[];
    {
       exit(8);   
    }
    Quelle est la bonne syntaxe ?
    Merci

  2. #2
    Expert Confirmé Sénior

    Homme Profil pro Patrick Gonord
    Enseignant Chercheur
    Inscrit en
    juin 2005
    Messages
    5 664
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrick Gonord
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2005
    Messages : 5 664
    Points : 13 489
    Points
    13 489

    Par défaut

    Le prototype des fonctions doit correspondre.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    void add_int_trace(char * message)
    {
       printf("message=<%s>\n",message)  ;
    }
     
    void  (*ptr_list_proc [1])(char*)= { add_int_trace };
     
    int main(int argc, char* argv[])
    {
        ptr_list_proc[0]("message");
        return 0;
    }

  3. #3
    Membre éclairé Avatar de awalter1
    Inscrit en
    août 2004
    Messages
    888
    Détails du profil
    Informations forums :
    Inscription : août 2004
    Messages : 888
    Points : 347
    Points
    347

    Par défaut

    Bonjour,
    j'obtiens toujours le même warning :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    >linux awalter 188>: more test.c
    void add_in_fic_trace(char * message)
    {
            printf("message=<%s>\n",message);
    }
     
    int (*ptr_list_proc[1])(char *) = { add_in_fic_trace };
     
    int main (int argc,char * argv[])
    {
       exit(8);
    }
     
    >linux awalter 189>: cc test.c -o test
    test.c:6: warning: initialization from incompatible pointer type
    >linux awalter 190>:

  4. #4
    Expert Confirmé Sénior

    Homme Profil pro Patrick Gonord
    Enseignant Chercheur
    Inscrit en
    juin 2005
    Messages
    5 664
    Détails du profil
    Informations personnelles :
    Nom : Homme Patrick Gonord
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2005
    Messages : 5 664
    Points : 13 489
    Points
    13 489

    Par défaut

    add_in_fic_trace() retourne void alors que le tableau est de pointeurs sur fonctions retournant int. Les prototypes ne sont pas les mêmes.

  5. #5
    Membre éclairé Avatar de awalter1
    Inscrit en
    août 2004
    Messages
    888
    Détails du profil
    Informations forums :
    Inscription : août 2004
    Messages : 888
    Points : 347
    Points
    347

    Par défaut

    Ah, oui ,c'est vrai.
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •