[C++] redefinition lors du linkage

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -  
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai créér un fichier eau.h dans lequel j'ai des fonctions.
ensuite, je crée un programme avec deux .c
dans ces deux .c j'inclu eau.h, je compile pour avoir les .o, tout se passe bien.
par contre lorsque je lie l'ensemble des .o ensemble, le compilateur me dit que je redefini mes fonction de eau.h !
je ne comprend pas pourquoi.
***fichier principal.c
#include "eau.h"
#include "structure.h"
main(){...}
****fichier structure.c
#include "eau.h"
#include "structure.h"
void structure::f(){...}

si je rajoute '#include <math.h> ' dans les deux .C je n'obtient pas d'erreur de compilation.
est-ce que quelq'un connaitrait cette ereur?

Salutation !
Char Snipeur

4 réponses

marvinrouge
 
if faut que tu rajjoutes ceci au TOUT DEBUT de ton fichier eau.h

#ifndef __EAU_H__
#defnie __EAU_H__

if faut que tu rajjoutes ceci TOUT A LA FIN de ton fichier eau.h
#endif

ça permet d'éviter ton problème quand plusieurs de tes fichiers incluent eau.h
0
marvinrouge
 
oups...

pardon c'était
#define __EAU_H__

et pas
#defnie __EAU_H__

marvinrouge
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Ok, merci, mais c'est deja fait.
Donc le problème ne vien pas de la.

Salutation !
Char Snipeur
0
marvinrouge
 
Ok, on va trouver,

peux-tu nous poster tous les messages que te sort par le compilateur stp ?

marvinrouge
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Bon en fait, j'ai trouvé.
il me restait des implemetations de fonctions dans le .h, ce qu'il fait qu'elles sont défini deux fois lors du linkage : 1 fois dans le main.c, et une fois dans structure.c
Comme quoi il y a une bonne raison à ce limité à déclarer les fonctions dans le .h, et à implementer dans le .c.
Dommage que ça ne soit pas dit plus clairement...
La compilation : je maitrise (pour ce que j'en fait) par contre, j'ai du mal avec le linkage, et impossible de trouver de la doc la dessus...
Merci marvinrouge

Salutation !
Char Snipeur
0
marvinrouge
 
oui j'aurais du penser à e dire de vérifier ça

en Java le pb existe plus (TOUT dans un seul et même fichier .class)

pour la doc faudrait cherhcer le bouqin "penser en C++" sur google il est en pdf ou htm grtatuit et doit aborderb le sujet je pense,

marvinrouge
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299 > marvinrouge
 
Je ne l'ai trouver qu'en anglais... :-[

Salutation !
Char Snipeur
0