Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 09/01/2006, à 17:52

drksh

Erreur de redéfinition à la compilation.

Bonjour, je débute sous linux et j'ai un problème avec GCC quand je fais le typedef suivant:

typedef struct noeud {} *Arbre;
typedef struct noeud { Arbre droit;
                                           Arbre gauche;
                                           Char *mot;       } Noeud;

Cette syntaxe marche très bien à la fac wink
Mais la gcc me dit: Erreur: Redefinition of 'struct noeud'.

Peut être qu'il connaît pas le type struct en fait.

Hors ligne

#2 Le 09/01/2006, à 21:50

cal

Re : Erreur de redéfinition à la compilation.

en fait dans la déclaration typedef struct noeud, "noeud" est un tag qui est optionnel mais qui sert de racourcie pour les futures déclarations de variables
donc ici ca revient à définir deux fois le même type de façon différente, donc gcc t'envoie bouler, une solution est de supprimer "noeud" ou d'utiliser des noms différents

au fait c'est "char" et pas "Char"

Hors ligne

#3 Le 09/01/2006, à 22:05

drksh

Re : Erreur de redéfinition à la compilation.

J'ai essayé avec un autre nom c'est pareil. Ce que je comprends pas c'est que ça marche très bien ainsi sur d'autres machines, enfin merci kan mm!

Hors ligne

#4 Le 09/01/2006, à 22:58

cal

Re : Erreur de redéfinition à la compilation.

quand je dis d'autre nom c'est d'autre nom pour "noeud", j'ai essayer en les enlevant pas de problème à la compilation et avec noeud1 et noeud2, pas de problème non plus

après le fait que ca compile sur d'autre machine vient peut être du fait que ce n'est pas le même compilateur, et qu'ils sont plus laxiste.  Je sais qu'en plus gcc 4 est encore plus stricte qu'avant et q'un certain nombre de programme doivent être revu pour pouvoir être compilé avec

enfin pour moi c'est ton code qui est mauvais....

Hors ligne

#5 Le 09/01/2006, à 23:04

drksh

Re : Erreur de redéfinition à la compilation.

Je pense aussi que ça vient de gcc 4.
Mais bon dans la logique le programme est correct, Arbre est de type pointeur sur un noeud, et un noeud est une structure qui contient 3 champs: le fils gauche, le fils droit et un champ de valeur.
En disant que le programme est mauvais tu remets en cause tout le cours de licence math info 2eme année du premier semestre!! Enfin c'est possible vu qu'on apprend les bases pour le moment, merci pr ton aide.

Hors ligne

#6 Le 09/01/2006, à 23:32

drksh

Re : Erreur de redéfinition à la compilation.

Avec gcc 3.3 ça marche nikel.

Hors ligne

Haut de page ↑