[C++] redefinition lors du linkage
Char Snipeur
Messages postés
10112
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 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
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
Ok, on va trouver,
peux-tu nous poster tous les messages que te sort par le compilateur stp ?
marvinrouge
peux-tu nous poster tous les messages que te sort par le compilateur stp ?
marvinrouge
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
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
pardon c'était
#define __EAU_H__
et pas
#defnie __EAU_H__
marvinrouge