Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problèmes d'inclusions

Deuxième édition...

Sujet résolu
    19 novembre 2007 à 10:13:30

    Bonjour,

    Bon j'ai déjà posté ce problème sur le forum C, mais n'ayant pas reçu de réponse et comme finalement il s'agit d'un code C++, je me permets de la reposer ici :

    voilà, j'ai un problème d'inclusions multiples malgrés #ifndef, #define et #endif :

    main.cpp
    1. #include <iostream>
    2. #include "constante.h"
    3. #include "classUnite.h"
    4. int main()
    5. {
    6. ;}


    ClassUnite.h
    1. #ifndef CLASSUNITE
    2. #define CLASSUNITE
    3. #include <iostream>
    4. #include "constante.h"
    5. void fct(int carte[LONGEURCARTE]);
    6. #endif


    Constante.h
    1. #ifndef CONSTANTE
    2. #define CONSTANTE
    3. #include "classUnite.h"
    4. #define LONGEURCARTE 10
    5. #endif


    ClassUnite.cpp
    1. #include "classUnite.h"
    2. void fct(int carte[LONGEURCARTE])
    3. {;}


    Quand je compile ça, le compilateur (C::B) me dit, dans la page ClassUnitee.cpp, que LONGEURCARTE n'est pas déclaré, mais quand je mets
    constante.h
    1. #ifndef CLASSCONSTANTE
    2. #define CLASSCONSTANTE
    3. //#include "classUnite.h"
    4. #define LONGEURCARTE 10
    5. #endif


    ça ne pose pas de problème...

    Bon j'imagine que l'erreur vient du code, mais je n'en vois pas..... Quelqu'un pourrait-il m'expliqué ce qui ne va pas??

    Merci :D:D

    PS : Ce code n'est là que pour illustrer le problème que je rencontre. Dans le code ou je rencontre le problème, j'ai des classes qui se répondent l'une l'autre. Or elles se trouvent dans des headers différents, et par concéquent j'ai besoin de les inclurent l'une dans l'autre, d'ou mon problème.


    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2007 à 11:45:56

      FAQ C++ de developpez -> Références circulaires
      • Partager sur Facebook
      • Partager sur Twitter
      C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
        19 novembre 2007 à 12:06:22

        Merci pour ton aide!!

        Le problème, c'est que je ne trouve rien sur les réfenreces circulaires dans cette FAQ....

        Tu es sûr qu'il s'agit d'un problème de références? En fait, j'ai jamais utilisé les références et je sais pas trop comment ça marche...(je suis débutant en C++), mais ça me surprend parce que j'ai rencontré le même problème en C, or, si je ne me trompe, les références n'existent pas en C, donc il doit bien exister une solution qui ne passe pas par les références....
        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2007 à 14:09:08

          "Référence", pas au sens C++. On dit aussi "dépendances circulaires/cycliques"
          -> http://cpp.developpez.com/faq/cpp/?page=classes#CLASS_reference_croisee
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
            19 novembre 2007 à 14:48:19

            Ok, merci beaucoup, ça règle mon problème :D:D

            Néanmoins, je ne peux m'empecher de trouver cette solution bizarre... ça fait un peu chipotage et pas très propre non?? Etonnant pour du C/C++

            PS : si quelqu'un peut m'expliquer comment on marque le V pour problème résolu, je m'empresserai de le faire...



            • Partager sur Facebook
            • Partager sur Twitter
              19 novembre 2007 à 15:07:14

              je suis pas sûr (je fait pas souvent des topics :p ) mais je crois que tu peux le faire en éditant ton premier post du topic, dans une case à cocher, en bas de l'espace d'écriture.
              • Partager sur Facebook
              • Partager sur Twitter
              Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                19 novembre 2007 à 15:14:29

                Ben apparement, la case n'apparait que quand on écrit un nouveau message, pas quand on édite :o ...
                Alors, voilà, je fais un nouveau message :D
                • Partager sur Facebook
                • Partager sur Twitter
                  19 novembre 2007 à 15:47:12

                  Réfléchis à comment fonctionne le préprocesseur qui règle tous les #qqch (#include, #ifndef, #define, etc).
                  Le problème est quasi indépendant du C++.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

                  Problèmes d'inclusions

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown