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

C Discussion :

problème avec structure dans fichier h


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut problème avec structure dans fichier h
    Bonjour,

    j'ai un projet en c sur les arbres binaires mais j'ai un petit problème pour ma struct de l'arbre.

    Dans mon fichier arbreBinaire.h j'ai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include "liste.h"
     
    struct noeud{
    	PListe l;
    	struct noeud *Sag;
    	struct noeud *Sad;
    };
    typedef struct noeud *arbre;
     
    arbre ArbreVide();
    int EstArbreVide(arbre A);
    arbre allouer();
    Pliste Racine(arbre A);
    arbre Gauche(arbre A);
    arbre Droit(arbre A);
    void setRacine(arbre A, Pliste l);
    void setGauche(arbre A, arbre B);
    void setDroit(arbre A, arbre B);
    arbre Construire(Pliste l, arbre B, arbre C);
    La structure PListe se trouve dans le fichier liste.h que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    struct Liste{
    	int element;
    	struct Liste * suivant;
    };
    typedef struct Liste *PListe;
     
    int estListeVide(PListe l);
    PListe listeVide();
    void setSuivant(PListe l, PListe p);
    PListe getSuivant(PListe l);
    void setElement(PListe l, int x);
    int getElement(PListe l);
    PListe allouerListe();
    PListe ajoutEnTete(PListe l, int x);
    void afficheRec(PListe l);
    int longueurRec(PListe l);
    void afficheInverse(PListe l);
    Quand je compile j'ai les erreurs suivantes :

    erreur : expected specifier-qualifier-list before 'Pliste'
    arbrebinaire.h:16: erreur: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘Racine’
    arbrebinaire.h:19: erreur: expected declaration specifiers or ‘...’ before ‘Pliste’
    arbrebinaire.h:22: erreur: expected ‘)’ before ‘l’

    Est ce que quelqu'un peut m'aider rapidement svp car je suis déjà à la bourre

    merci

    Alaninho

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Par défaut
    PListe est différent de Pliste en C.

    void setRacine(arbre A, Pliste l);
    devient donc :
    void setRacine(arbre A, PListe l);

  3. #3
    Membre émérite
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Par défaut
    Bonjour,

    Vraisemblablement, il s'agit d'une simple faute de frappe. En effet, ton type, défini grâce à l'utilisation de typedef, se nomme PListe, tandis que ton prototype utilise un type nommé Pliste. Si je prends l'exemple de la ligne 16 dans le code que tu nous as présenté, étant donné que l'utilisation des identificateurs en C est sensible à la casse, le compilateur ne reconnaît pas ce dernier, et le prend pour un identificateur d'objet. Lorsqu'il continue son analyse, il tombe sur un deuxième identificateur (l) juste derrière : étant donné que cette syntaxe n'a pas de sens, il indique une erreur. Ceci dit, un peu plus de concordance dans tes nommages t'aurait sans doute permis de mieux t'y retrouver.

    Bonne journée.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut
    Merci, en effet j'ai pas fais attention.

    Par contre maintenant j'ai plein d'erreurs, surtout de conflit.

    liste.h:1: erreur: redefinition of ‘struct Liste’
    liste.h:5: erreur: conflicting types for ‘PListe’
    liste.h:5: note: previous declaration of ‘PListe’ was here
    liste.h:7: erreur: conflicting types for ‘estListeVide’
    liste.h:7: note: previous declaration of ‘estListeVide’ was here
    liste.h:8: erreur: conflicting types for ‘listeVide’
    liste.h:8: note: previous declaration of ‘listeVide’ was here
    liste.h:9: erreur: conflicting types for ‘setSuivant’
    liste.h:9: note: previous declaration of ‘setSuivant’ was here
    liste.h:10: erreur: conflicting types for ‘getSuivant’
    liste.h:10: note: previous declaration of ‘getSuivant’ was here
    liste.h:11: erreur: conflicting types for ‘setElement’
    liste.h:11: note: previous declaration of ‘setElement’ was here
    liste.h:12: erreur: conflicting types for ‘getElement’
    liste.h:12: note: previous declaration of ‘getElement’ was here
    liste.h:13: erreur: conflicting types for ‘allouerListe’
    liste.h:13: note: previous declaration of ‘allouerListe’ was here
    liste.h:14: erreur: conflicting types for ‘ajoutEnTete’
    liste.h:14: note: previous declaration of ‘ajoutEnTete’ was here
    liste.h:15: erreur: conflicting types for ‘afficheRec’
    liste.h:15: note: previous declaration of ‘afficheRec’ was here
    liste.h:16: erreur: conflicting types for ‘longueurRec’
    liste.h:16: note: previous declaration of ‘longueurRec’ was here
    liste.h:17: erreur: conflicting types for ‘afficheInverse’
    liste.h:17: note: previous declaration of ‘afficheInverse’ was here
    arbrebinaire.c: In function ‘allouer’:
    arbrebinaire.c:17: attention : assignment from incompatible pointer type
    arbrebinaire.c: Hors de toute fonction :
    arbrebinaire.c:21: erreur: conflicting types for ‘Racine’
    arbrebinaire.h:16: note: previous declaration of ‘Racine’ was here
    arbrebinaire.c: In function ‘Racine’:
    arbrebinaire.c:22: attention : return from incompatible pointer type
    arbrebinaire.c: Hors de toute fonction :
    arbrebinaire.c:33: erreur: conflicting types for ‘setRacine’
    arbrebinaire.h:19: note: previous declaration of ‘setRacine’ was here
    arbrebinaire.c: In function ‘setRacine’:
    arbrebinaire.c:34: attention : assignment from incompatible pointer type
    arbrebinaire.c: Hors de toute fonction :
    arbrebinaire.c:45: erreur: conflicting types for ‘Construire’
    arbrebinaire.h:22: note: previous declaration of ‘Construire’ was here
    arbrebinaire.c:174: erreur: expected ‘;’, ‘,’ or ‘)’ before ‘Facteur’
    arbrebinaire.c: In function ‘LectureCodeFacteur’:
    arbrebinaire.c:231: attention : implicit declaration of function ‘ArbreFacteurRec’
    arbrebinaire.c:231: attention : assignment makes pointer from integer without a cast

    Je comprends pas car j'ai pas deux fois les même fonction.

    Quelqu'un à une solution?

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 179
    Par défaut
    Citation Envoyé par alaninho Voir le message
    Je comprends pas car j'ai pas deux fois les même fonction.
    A tout hasard, as tu fais attention aux inclusions multiples?

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Remarque judicieuse.

    Les fichiers que tu montres ne contiennent pas de gardes d'inclusion : http://www.developpez.net/forums/d93...c/#post5282818

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

Discussions similaires

  1. problème avec accent dans fichiers
    Par geektoo dans le forum Cobol
    Réponses: 5
    Dernier message: 09/07/2013, 13h34
  2. Réponses: 4
    Dernier message: 22/09/2010, 09h30
  3. Réponses: 4
    Dernier message: 10/05/2009, 10h18
  4. problème avec écriture dans un fichier
    Par haraelendil dans le forum Débuter
    Réponses: 1
    Dernier message: 08/09/2008, 09h36
  5. Problème avec structure dans une fonction
    Par Saliman dans le forum C
    Réponses: 2
    Dernier message: 22/11/2007, 11h45

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