Même .h dans plusieurs .h : "error : redefinition of struct" [Résolu/Fermé]

Signaler
Messages postés
42
Date d'inscription
dimanche 25 décembre 2011
Statut
Membre
Dernière intervention
13 février 2017
-
Messages postés
42
Date d'inscription
dimanche 25 décembre 2011
Statut
Membre
Dernière intervention
13 février 2017
-
Bonjour,

Je réalise en ce moment un projet de c, divisé en deux grosses parties. Je les ai donc séparées en deux .h : gerer.h et afficher.h
Dans mon main.c :
#include "gerer.h"
#include "afficher.h"

Le problème, c'est que mes deux parties utilisent les mêmes types, qui sont rangés dans types.h, donc dans les deux j'ai #include "types.h".

Et quand je compile, mon compilateur me dit :
error : redefinition of 'struct SListe'

J'ai bien compris que le fait de #include "types.h" deux fois donnait envie à mon compilateur de le compiler deux fois, ça se comprend. Mais je n'ai pas compris comment régler le problème, je n'ai que quelques mois de C derrière moi et niveau organisation des .h et des .c je suis paumée.

C'est pourquoi je viens vers vous pour vous poser cette question : que puis-je faire pour que ce soit bien organisé et que mon compilateur l'accepte ? :'(

Merci d'avance pour vos réponses et bonne journée.

(actuellement j'utilise Windows, mais je code sur Ubuntu)

1 réponse

Messages postés
2085
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 mai 2021
243
cf : https://gcc.gnu.org/onlinedocs/cpp/Conditionals.html
Vite fait :
/*types.h*/
#ifndef _TYPES_H
#define _TYPES_H

/* Contenu actuel de ton fichier */

#endif /*_TYPES_H*/


Messages postés
42
Date d'inscription
dimanche 25 décembre 2011
Statut
Membre
Dernière intervention
13 février 2017
8
Merci beaucoup, je ne savais pas qu'on pouvait faire ça ! C'est top !
Messages postés
2085
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 mai 2021
243
De rien...

Tu dis que tu as divisé ton projet en 2 dans des fichiers .h, normalement les fichiers header ne devrait contenir que des prototypes, tes fonctions devraient être définies dans des fichiers .c

Des détails ici : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/15212-la-programmation-modulaire
Messages postés
42
Date d'inscription
dimanche 25 décembre 2011
Statut
Membre
Dernière intervention
13 février 2017
8 >
Messages postés
2085
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
4 mai 2021

D'accord je vais changer ça, merci !