[C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  aleben89 le Dim 31 Oct 2010, 17:04

Bonjour,

Pour faire l'exercice de la ronde de l'empereur exterminus, j'ai créé le un type ListeChainee en plus de mon type AFile. J'ai utilisé la programmation modulaire avec un .c et un .h pour chaque type. J'ai donc BMaillon.c, BMaillon.h, AFile.c, AFile.h, ListeChainee.c, ListeChainee.h . Dans ListeChainee.h et AFile j'utilise le l'enumération BOOL retirée du typesCommun.h du premier TD comme ceci:

AFile:
Code:

#ifndef AFILE_H_
#define AFILE_H_

typedef struct AFile { BMaillon * premier, * dernier ; } AFile ;

typedef enum { FAUX, VRAI }   BOOL ;
AFile * newAFile (void) ;  /* alloue une AFile et retourne son adresse */
BOOL isEmptyAFile (const AFile * f) ;  /* retourne VRAI si la file est vide */
TVal frontAFile ( const AFile * f);  /* retourne la valeur de l'élément de tête */
TVal popAFile ( AFile * f ) ;  /* supprime l'élément de tête (avec libération mémoire) et retourne sa valeur */
void pushAFile ( AFile * f , TVal val ) ;    /* crée un BMaillon avec val et le met à la fin */
void deleteAFile ( AFile ** adrF ) ;    /*  vide la file *adrF et la libère */

#endif /* AFILE_H_ */

ListeChainee
Code:

#ifndef LISTECHAINEE_H_
#define LISTECHAINEE_H_

typedef enum { FAUX, VRAI }   BOOL ;
typedef struct ListeChainee {... } ListeChainee ;
....
BOOL isEmptyListeChainee(ListeChainee *);
.....
#endif /* LISTECHAINEE_H_ */

Et j'ai l'erreur de compilation suivante:

redeclaration of enumerator 'VRAI'
redeclaration of enumerator 'FAUX'
conflicting types of 'BOOL'

Comment puis-je faire pour ne plus avoir cette erreur sans changer mes types de retours de mes fonctions?

Merci pour votre aide

aleben89


Dernière édition par aleben89 le Dim 31 Oct 2010, 18:44, édité 1 fois

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  smb le Dim 31 Oct 2010, 18:06

Cette erreur vient du fait que tu déclares dans 2 headers différents le même alias BOOL.
Le mieux est d'extraire ce typedef de tes 2 headers et de le placer dans un header que tu inclus dans AFile.h et ListeChainee.h. Dans le header où tu déclares le type BOOL n'oublies pas les directives au préprocesseur évitant les problèmes d'inclusions multiples.

Neutral


smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  aleben89 le Dim 31 Oct 2010, 18:22

Merci, je vais faire de suite, par contre comme notre professeur de c théorie ayant été absent plusieurs fois en ce début d'année pour cause de maladie, nous n'avons pas encore vue la comment faire avec le préprocesseur pour éviter les inclusions multiples, ou alors je ne m'en souviens pas et je ne l'ai pas noté. Embarassed Pouvez-vous m'éclairez ?

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  smb le Dim 31 Oct 2010, 18:29

C'est simple dans la mesure où eclipse le fait pour toi quand tu crées un fichier header.
Les directives dont j'ai parlé sont automatiquement incluses.
Essaie, je reste à l'écoute.



smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  aleben89 le Dim 31 Oct 2010, 18:44

Je n'ai plus d'erreur de compilation, merci Smile j'aurais appris quelque chose aujourd'hui et je vais m'empresser de le rajouter à mon cours Wink

aleben89

Nombre de messages : 108
Age : 27
Prénom : Benjamin
Statut : Etudiant 3ème Réseau
Localisation : Bruxelles ou en province de Luxembourg (perdu en verte campagne entre 2 champs)
Date d'inscription : 27/01/2009

Revenir en haut Aller en bas

resolu Re: [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  smb le Dim 31 Oct 2010, 18:49

Quel plaisir d'avoir pu aider quelqu'un au moment où Kim remportait les masters de Doha !

cheers

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: [C TD4] réutilisation de l'enum BOOL dans 2 .h différents

Message  Contenu sponsorisé Aujourd'hui à 18:57


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum