IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[Headers] Inclusion multiple


Sujet :

C

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut [Headers] Inclusion multiple
    Hello,
    j'ai un petit programme de 6 fichiers sources + un fichier contenant le main. A chacun de ces fichiers correspond un fichier header. Il y a entre 5 et 10 fonctions par fichier/header.
    J'ai un pb a a compilation: des définitions multiples... Et j'ai du mal a m'en dépatouiller, vu qu je ne vois pas quand j'inclu plusieurs fois mes fichiers...
    En fait, dans mon main j'inclus un fichier .h qui lui même inclu le fichier .h d'un des autres fichiers etc...
    pr essayer d'être plus explicite, ca ressemble a peu prés a ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    // main.c
    #include "groupe.h"
     ...
     
    // groupe.h
    #include "etudiant.h"
    #include "macro.h"
    typedef struct groupe {
                         int num ;
                         struct etudiant *lst ;
                } etudiant ;
     
    // groupe.c
    #include "groupe.h"
    ...
     
    // etudiant.h
    #include "macro.h"
    typedef struct etudiant{
                         (...)
                } etudiant ;
    En fait le pb vien surement de macro.h (qui contient des macro et des constantes globales) que je dois inclure dans tout mes .c vu qu'il est utilisé par chacun de mes fichiers sources. Seulement si je l'inclu uniquement dans mon main, la compilation ne passe pas vu qu'il en a besoin aussi dans les autres fonctions qui sont dans des fichiers séparés... Comment faire pour éviter ce problème?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Salut, pour éviter d'avoir des définitions multiples, je te conseille de faire pour chaque fichier .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #ifndef _MON_FICHIER_H_
    #define _MON_FICHIER_H_
     
    ici tu mets tout ton .h
     
    #endif
    et là tu peux mettre un .h dans un autre .h sans aucun pb.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Points : 172
    Points
    172
    Par défaut
    oki j'avais vu ca pour un prototype de fonction et je trouvai ca lourd de le faire pour chaque prototype de fonction je pensais pas qu'on pouvais y mettre tout un bloc
    merci de ta réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inclusion multiple de header
    Par robinsondesbois dans le forum Débuter
    Réponses: 10
    Dernier message: 07/05/2015, 08h14
  2. Problème d'inclusion "multiple" de headers
    Par NeMo_O dans le forum C
    Réponses: 12
    Dernier message: 21/05/2008, 21h25
  3. Inclusion multiple etc
    Par GO dans le forum C++
    Réponses: 6
    Dernier message: 27/09/2006, 15h37
  4. inclusions multiples c++
    Par persam dans le forum C++
    Réponses: 2
    Dernier message: 30/11/2005, 14h09
  5. Problème d'inclusions multiples
    Par Le Furet dans le forum C
    Réponses: 2
    Dernier message: 03/10/2005, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo