IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Probleme de typedef struct


Sujet :

Linux

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut Probleme de typedef struct
    Bonjour a tous,
    Voila j'ai un problème avec une appli que je doit porter sous linux, compilation gcc.
    Mon problème est le suivant :
    J'ai un fichier header (.h) dans lequel sont défini des structures nécessaires à la bonne exécution du prog. Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct s_pixmap
    {
      Pixmap data;
      int x_start, y_start;
      int width, height;
    };
     
    typedef struct s_pixmap *t_pixmap_ptr;
    GCC à la compil me donne cette erreur :

    redefinition of ‘struct s_pixmap’



    Voila moi j'ai essayer de faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef  struct
    {
      Pixmap data;
      int x_start, y_start;
      int width, height;
    }s_pixmap;
     
    struct s_pixmap *t_pixmap_ptr;
    Mais cela ne fonctionne pas non plus.



    Si quelqu'un pourrai me donner un petit coup de main?
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    Moi j'y suis arrivé de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef struct s_pixmap
    {
    Pixmap data;
    int x_start, y_start;
    int width, height;
    }s_pix;
     
    typedef s_pix *  t_pixmap_ptr;
    Après c'est peut être pas la meilleure manière de faire et étant donné que ça fait un petit moment que je n'ai plus eu l'occasion de faire de C ...
    Mais ça a le mérite de fonctionner

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Merci pour ta reponse si rapide je vais tester ce desuite

  4. #4
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    J'ai toujours le meme probleme, sniffff........

    Attention je ne compile pas avec -ANSI c'est peut etre pour ca que c'est passé chez toi.

  5. #5
    Rédacteur
    Avatar de CedrX
    Inscrit en
    Avril 2007
    Messages
    1 111
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 111
    Par défaut
    Attention je ne compile pas avec -ANSI c'est peut etre pour ca que c'est passé chez toi.
    --> Hum c'est fort probable

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 828
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par matdakillah Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct s_pixmap *t_pixmap_ptr;
    GCC à la compil me donne cette erreur :

    redefinition of ‘struct s_pixmap’
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef struct s_pixmap* t_pixmap_ptr;
    Et accessoirement , il s'agit d'un pb de langage C, pas d'un pb Linux !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Eh non, ce n'est pas un problème de langage C. Ce code fonctionné sous HP715, je pense plus que c'est un problème qui vient du compilateur, ou même d'Eclipse. Franchement je ne vois pas du tout d'ou cela peut venir......

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    si c'est un problème de C...

    Et voilà la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    typedef  struct
    {
      Pixmap data;
      int x_start, y_start;
      int width, height;
    }s_pixmap;
     
    s_pixmap *t_pixmap_ptr;
    quand tu fais ton typedef, tu définis un nouveau type qui est une structure.

    Le mot-clé struct devant ta déclaration s_pixmap *t re-défini une structure...

  9. #9
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    OK merci pour vos réponses, j'ai résolu ce problème, mais un problème ne viens jamais seul, malheureusement.


    J'ai ce nouveau problème :

    Dans un fichier .h :

    struct s_trace{
    int x;
    int Y;
    .........
    }

    dans un autre fichier .h je fais un tableau de cette structure comme suit :

    struct s_trace g_trace[mavar +1];



    Et la c'est le drame. A la compil il me donne cette jolie erreur :
    Les éléments du tableau sont de types incomplets

    ?????

  10. #10
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Pour info quand je ne mets pas le mot struct devant mon tableau, j'ai une autre erreur :
    expected '=', ',', ';', 'asm' or '__attribute__' before s_trace.


    Si on pouvais me donner un piti coup de main ce serai sympa.

  11. #11
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    lis le manuel C sur les structures....

    Là tu ne définis pas une structure....

  12. #12
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Je vien de lire ce superbe cours sur le langage C, mais ils ne parlent en aucun cas des tableau de structures....

    Et si je met "typedef" devant la définition de ma structure cela ne change absolument rien....

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    rien à voir avec les tableaux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct s_trace{
    int x;
    int Y;
    .........
    }
    ne définis pas une structure...

  14. #14
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    J'ai beau lire les tutos et les cours je ne vois vraiment pas ou est l'erreur, et Eclipse me dis bien qu'il s'agit d'une structure...

  15. #15
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    rien à voir avec les tableaux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct s_trace{
    int x;
    int Y;
    .........
    }
    ne définis pas une structure...
    Je confirme, il y a un problème de code là. Pour te donner un indice : La ponctuation est très importante en C.

    Voilou.

  16. #16
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Merci mais je sais que je dois finir ma déclaration de structure par un point virgule, je n'ai pas fais de copier coller de mon code, j'ai omis de mettre le point virgule mais il est bien présent.
    L'erreur ne viens pas de la mais c'est gentil de vous donner du mal pour me le faire trouver tout seul.

  17. #17
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 33
    Par défaut
    Et pour info ce code à déjà étai compilé, je dois faire le portage de cette appli sous gcc.

  18. #18
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par matdakillah Voir le message
    Et pour info ce code à déjà étai compilé, je dois faire le portage de cette appli sous gcc.

    compilé avec quoi ?

    c'est (très) peu correct...

  19. #19
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Par défaut
    essai de mettre le code qui bloc en question et non pas un semblant de code. Car là, on ne peut pas trop t'aider sinon.

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 262
    Par défaut
    Salut,

    voila comment on declare un type en C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    typedef struct  s_opt
    {
         char       c1;
         int        nb;
         char       *str;
    }               t_opt;
    A+

Discussions similaires

  1. probleme fonction return struct
    Par ninours23 dans le forum Débuter
    Réponses: 4
    Dernier message: 18/02/2008, 10h44
  2. Probleme avec Typedef
    Par robin.pariset dans le forum C
    Réponses: 2
    Dernier message: 30/11/2007, 12h26
  3. Questions sur Typedef Struct
    Par pinto_armindo dans le forum C
    Réponses: 6
    Dernier message: 26/11/2007, 20h22
  4. typedef struct
    Par moon93 dans le forum C
    Réponses: 3
    Dernier message: 10/05/2006, 11h22
  5. Réponses: 6
    Dernier message: 31/08/2005, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo