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 :

Structures croisées avec #include


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 97
    Par défaut Structures croisées avec #include
    bonjour
    j'ai une structure A dans un fichier A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef _fichierA_
    #define _fichierA_
    #include fichierB
     
    typedef struct
    {
        StructureB b;
    }StructureA;
     
    #endif
    et une structure B dans un fichier B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef _fichierB_
    #define _fichierB_
    #include fichierA
     
    typedef struct
    {
        StructureA a;
    }StructureB;
    #endif

    Le problème est que si j'analyse A en premier il va charger B qui va voir structureA mais ne va pas le trouver puisque l'analse de A n'est pas finie

    merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Je dirais que tu peux te servir des "tags" des structures, ou bien en mettre un des deux à void* dans une structure et le caster à l'usage...

  3. #3
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Ou carrément utiliser des pointeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifndef _fichierA_
    #define _fichierA_
     
    typedef struct
    {
        struct StructureB *b;
    }StructureA;
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #ifndef _fichierB_
    #define _fichierB_
     
    typedef struct
    {
        struct StructureA *a;
    }StructureB;
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include fichierA
    #include fichierB
     
    int main()
    {
        ...
    }

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par thierryG Voir le message
    bonjour
    j'ai une structure A dans un fichier A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #ifndef _fichierA_
    #define _fichierA_
    #include fichierB
     
    typedef struct
    {
        StructureB b;
    }StructureA;
     
    #endif
    et une structure B dans un fichier B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ifndef _fichierB_
    #define _fichierB_
    #include fichierA
     
    typedef struct
    {
        StructureA a;
    }StructureB;
    #endif
    Le problème est que si j'analyse A en premier il va charger B qui va voir structureA mais ne va pas le trouver puisque l'analse de A n'est pas finie
    On ne peut pas faire ça avec des structures, car ça n'a évidement aucun sens. Par contre, on peut le faire avec des pointeurs, mais c'est quand même une conception assez tordue...

    Les identificateurs commençant par un _ sont réservés à l'implémentation.

    On peut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /* main.c */
    #include "a.h"
     
    int main (void)
    {
       struct a a;
       struct b b;
     
       a.b = &b;
       b.a = &a;
     
       return 0;
    }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #ifndef H_A
    #define H_A
     
    /* a.h */
     
    #include "b.h"
     
    struct a
    {
        struct b *b;
    };
     
    #endif
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #ifndef H_B
    #define H_B
     
    /* b.h */
     
    #include "a.h"
     
    struct b
    {
        struct a *a;
    };
     
    #endif

Discussions similaires

  1. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49
  2. [MFC] Automation : pb avec #include "excel.h"
    Par Nath71 dans le forum MFC
    Réponses: 2
    Dernier message: 19/09/2005, 09h40
  3. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 15h22
  4. [DLL] PB avec Include (reformulation)
    Par Donut Man dans le forum MFC
    Réponses: 2
    Dernier message: 28/06/2005, 08h16
  5. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00

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