Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur dans projet sous code blocks

error :: #include expects "FILENAME" or <FILENAME>

Sujet résolu
    28 janvier 2015 à 2:43:29

    Bonjour,

    J'ai repris le c++ depuis peu, et pour la première fois j'ai tenter de créer des projets avec plusieurs fichiers :

    Un main.cpp :

    #include <iostream>
    #include "Personnage.h" //Ne pas oublier
    using namespace std;

    int main()
    {
        cout << "Hello world!" << endl;
        return 0;
    }

    un fichier personnage.cpp  :

    #include <iostream>
    #include "Personnage.h"
    using namespace std;

    void Personnage::recevoirDegats(int nbDegats)
    {
    m_vie -= nbDegats;
        //On enlève le nombre de dégâts reçus à la vie du personnage

        if (m_vie < 0) //Pour éviter d'avoir une vie négative
        {
            m_vie = 0; //On met la vie à 0 (cela veut dire mort)
        }
    }

    void Personnage::attaquer(Personnage &cible)
    {
        cible.recevoirDegats(m_degatsArme);
        //On inflige à la cible les dégâts que cause notre arme
    }

    void Personnage::boirePotionDeVie(int quantitePotion)
    {
        m_vie += quantitePotion;
        if (m_vie > 100) //Interdiction de dépasser 100 de vie
        {
            m_vie = 100;
        }
    }

    void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
    {
        m_nomArme = nomNouvelleArme;
        m_degatsArme = degatsNouvelleArme;
    }

    bool Personnage::estVivant()
    {
        if (m_vie > 0) //Plus de 0 de vie ?
        {
            return true; //VRAI, il est vivant !
        }
        else
        {
            return false; //FAUX, il n'est plus vivant !
        }
    }

    Un fichier personnage.h :

    #ifndef PERSONNAGE_H_INCLUDED
    #define PERSONNAGE_H_INCLUDED


    #include <string>
    class Personnage
    {
        public:
        void recevoirDegats(int nbDegats);
        void attaquer(Personnage &cible);
        void boirePotionDeVie(int quantitePotion);
        void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
        bool estVivant();


        private:
        int m_vie;
        int m_mana;
        std::string m_nomArme; //Pas de using namespace std,
        int m_degatsArme;
    };
    #endif

    Seulement, lorsque je compile mon main ou le fichier Personnage.cpp, je lis l'erreur suivante :

     C:\Users\...\C++ 2015\programme 1\essaidu26\essaispersonnage\Personnage.cpp|2|error: #include expects "FILENAME" or <FILENAME>|

    Lorsque je compile  j'obtient encore plus d'erreurs, et commence par :

    Mon projet, mes fichiers.cpp et .h sont dans un dossier appelé projetbase, et il s'est créé un fichier bin et un fichier obj dans le dossier.

    Je ne sais pas comment faire pour enlever cette erreur, j'ai l"impression que le compiler s'énerve car il ne trouve pas le fichier header.

    j'ai eu le même problème avec dev-c++ et je trouve pas de solutions sur les Forums.

    Pouvez vous m'aider svp je ne peux pas avancer dans le cours de c++ si je ne peux pas créer et compiler des projet.

    J'ai besoins de vous pour me dire "c'est tout simple, tu n'as qu'à faire comme ça... " :)

    Merci

    -
    Edité par Filoul3 28 janvier 2015 à 2:58:57

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 janvier 2015 à 3:51:24

      Déjà tu dit le fichier personnage.h alors que tu inclus Personnage.h.
      • Partager sur Facebook
      • Partager sur Twitter
        28 janvier 2015 à 3:56:28

        oui c'est mon fichier Personnage.h, mon fichier header qui contient le code

        #ifndef PERSONNAGE_H_INCLUDED
        #define PERSONNAGE_H_INCLUDED


        #include <string>
        class Personnage
        {
            public:
            void recevoirDegats(int nbDegats);
            void attaquer(Personnage &cible);
            void boirePotionDeVie(int quantitePotion);
            void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
            bool estVivant();


            private:
            int m_vie;
            int m_mana;
            std::string m_nomArme; //Pas de using namespace std,
            int m_degatsArme;
        };
        #endif

        • Partager sur Facebook
        • Partager sur Twitter
          28 janvier 2015 à 12:12:48

          Bonjour, merci d'utiliser le bouton "</>" pour inclure du code et permettre une meilleur lisibilité de votre code sur le forum.

          Peux-tu nous détailler l'arborescence de tes fichiers ? Comment compiles-tu ?

          -
          Edité par TheNawaKer 28 janvier 2015 à 12:13:15

          • Partager sur Facebook
          • Partager sur Twitter
          Rédacteur chez Millenium et Étudiant en L3 STIC à Orléans
            28 janvier 2015 à 13:10:34

            OK merci du conseil TheNawaker pour l'envoi de code.

            Pour compiler j'ai GNU GCC compiler, qui ne m'a pas posé de pb dans des programmes "simple" (un seul fichier main).

            L'arborescence du projet :

            projetbase.cbp

                  Sources:    --> main.cpp

                                    --> personnage.cpp

                 Headers:    --> personnage.h

            Si c'est un problème de compilateur, merci de m'aiguiller sur les solutions car je maîtrise pas la configuration du compilateur.

            • Partager sur Facebook
            • Partager sur Twitter
              28 janvier 2015 à 13:20:25

              Reposte ton code en utilisant la balise stp. On pourra t'aider plus efficacement ;)
              • Partager sur Facebook
              • Partager sur Twitter
              Mehdidou99 - Plus on apprend, et euh... plus on apprend. | Ne lisez pas le cours de C++ d'OpenClassrooms ! Il est de mauvaise qualité. Essayez plutôt celui-là. Jeux (3D) en C++ ? Unreal Engine 4, c'est bien, mangez-en !
                28 janvier 2015 à 14:52:43

                Je viens de copier/coller tes fichiers. Code::block compile sans accroc. Est ce que tu coche "Debug" et "Release" situé en dessous de

                "Add file to active projet. In build target(s) : " lorsque tu crée ton fichier .h ou .cpp ?

                • Partager sur Facebook
                • Partager sur Twitter

                Tout est possible tant qu'on y croit. 

                  28 janvier 2015 à 14:56:32

                  OK donc je revien sur mon code et mon problème de compilation, mon projet contient 3 fichiers :

                  Un main.cpp :

                  #include <iostream>
                  #include "Personnage.h" //Ne pas oublier
                  using namespace std;
                  
                  int main()
                  {
                      cout << "Hello world!" << endl;
                      return 0;
                  }



                  un fichier personnage.cpp  :

                  #include <iostream>
                  #include "Personnage.h"
                  using namespace std;
                  
                  void Personnage::recevoirDegats(int nbDegats)
                  {
                  m_vie -= nbDegats;
                      //On enlève le nombre de dégâts reçus à la vie du personnage
                  
                      if (m_vie < 0) //Pour éviter d'avoir une vie négative
                      {
                          m_vie = 0; //On met la vie à 0 (cela veut dire mort)
                      }
                  }
                  
                  void Personnage::attaquer(Personnage &cible)
                  {
                      cible.recevoirDegats(m_degatsArme);
                      //On inflige à la cible les dégâts que cause notre arme
                  }
                  
                  void Personnage::boirePotionDeVie(int quantitePotion)
                  {
                      m_vie += quantitePotion;
                      if (m_vie > 100) //Interdiction de dépasser 100 de vie
                      {
                          m_vie = 100;
                      }
                  }
                  
                  void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme)
                  {
                      m_nomArme = nomNouvelleArme;
                      m_degatsArme = degatsNouvelleArme;
                  }
                  
                  bool Personnage::estVivant()
                  {
                      if (m_vie > 0) //Plus de 0 de vie ?
                      {
                          return true; //VRAI, il est vivant !
                      }
                      else
                      {
                          return false; //FAUX, il n'est plus vivant !
                      }
                  }



                  Un fichier personnage.h :

                  #ifndef PERSONNAGE_H_INCLUDED
                  #define PERSONNAGE_H_INCLUDED
                  
                  
                  #include <string>
                  class Personnage
                  {
                      public:
                      void recevoirDegats(int nbDegats);
                      void attaquer(Personnage &cible);
                      void boirePotionDeVie(int quantitePotion);
                      void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
                      bool estVivant();
                  
                  
                      private:
                      int m_vie;
                      int m_mana;
                      std::string m_nomArme; //Pas de using namespace std,
                      int m_degatsArme;
                  };
                  #endif



                  Seulement, lorsque je compile mon main ou le fichier Personnage.cpp, je lis l'erreur suivante :

                   C:\Users\...\C++ 2015\programme 1\essaidu26\essaispersonnage\Personnage.cpp|2|error: #include expects "FILENAME" or <FILENAME>|



                  Mon projet, mes fichiers.cpp et .h sont dans un dossier appelé projetbase, et il s'est créé un fichier bin et un fichier obj dans le dossier.

                  Pour compiler j'ai GNU GCC compiler, qui ne m'a pas posé de pb dans des programmes "simple" (un seul fichier main).

                  L'arborescence du projet sous codeblocks :

                  projetbase.cbp

                        Sources:    --> main.cpp

                                          --> personnage.cpp

                       Headers:    --> personnage.h

                  Si c'est un problème de compilateur, merci de m'aiguiller sur les solutions car je maîtrise pas la configuration du compilateur.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 janvier 2015 à 15:58:29

                    Je ne vois pas du tout d'où ça viens. Chez moi ton code fonctionne, pourtant j'utilise aussi Code::Blocks.

                    Tiens, en y regardant de plus près, l'erreur parle d'un fichier Personnage.cpp dans un dossier nommé "essaispersonnage". Or tu dis juste en dessous que tes fichiers sont tous dans un dossier "projetbase". Est ce que ça ne pourrais pas venir de là?  J'ai beau tester, je n'arrive pas à reproduire ton erreur, a part lorsque je supprime les guillemets a #include "Personnage.h" .

                    -
                    Edité par Raymantha 28 janvier 2015 à 15:59:09

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Tout est possible tant qu'on y croit. 

                      28 janvier 2015 à 19:19:35

                      Oui c'est vrai j'ai essayé de créer plusieurs projets mais avec le même résultat.

                      Dans ce cas, voici l'erreur que j’obtiens en compilant le main

                      (l'erreur pointe sur la ligne 2 : #include "Personnage.h" )

                      C:\Users\...\programmation\C++ 2015\programme 1\projetbase\main.cpp|2|error: #include expects "FILENAME" or <FILENAME>|

                      Lorsque je compile le fichier personnage.cpp, j'ai la même erreur :

                      C:\Users\...\programmation\C++ 2015\programme 1\projetbase\Personnage.cpp|2|error: #include expects "FILENAME" or <FILENAME>|

                      Avec des erreurs à chaque ligne, du style :

                      C:\Users\...\programmation\C++ 2015\programme 1\projetbase\Personnage.cpp|31|error: stray '\240' in program|

                      ||More errors follow but not being shown.|

                      ||Edit the max errors limit in compiler options...|

                      ||=== Build failed: 50 error(s), 0 warning(s) (0 minute(s), 5 second(s)) ===|

                      Apparemment lors de la compilation, c'est comme si mon fichier personnage.h n'était pas trouvé, donc chaque variable et chaque fonction n'étant pas déclarée il me met un message d'erreur.

                      Pour plus d'infos je suis sous windows7 64bits, j'ai ré-installé plusieurs fois code blocks mais le résultat est le même.

                      J'ai fais installation standard.

                      Est ce que je dois paramétrer quelque chose ( compilateur? ) ou ajouter des plugins ou autre ???

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 janvier 2015 à 23:53:10

                        Bonjour, es-tu sur de l'orthographe de tes includes ? Cela vient peut-être de la majuscule que tu utilises dans ton include et qui n'est pas présente dans le nom du fichier (la casse est importante).

                        -
                        Edité par TheNawaKer 30 janvier 2015 à 23:53:19

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Rédacteur chez Millenium et Étudiant en L3 STIC à Orléans
                          1 février 2015 à 4:10:47

                          Merci pour vos réponses mais j'ai ouvert un autre topic nommé

                          Erreur compilation sous code blocks

                          Et on m'a donné une réponse :

                          Je suis allé dans l'onglet <Settings> puis <editor>, dans <other settings>, j'ai sélectionné l'option "show spaces in editor".

                          Cette option permet de symboliser les espaces dans le code par de petits points gris.

                          J'ai alors vu qu'il manquait des espaces entre différents codes, notamment la ligne 2 entre #include et  "Personnage.h"  !!!!!!!

                          ( par contre ça redevient des espaces dans le code posté qui est donc utilisable )

                          Je voyais un espace dans l'éditeur, mais pas de petit point pour le symboliser.

                          J'ai supprimé ce caractère invisible et j'ai mis un espace.

                                                              Puis j'ai compilé et CA MARCHE ENFIN !!!

                          Merci à tous pour votre aide sur cette erreur vraiment bête, au moins j'en ai appris plus sur le logiciel et la programmation.

                          Je suis nouveau sur le site et ça fait plaisir de voir que la communauté est active :)

                          A bientôt

                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 février 2015 à 11:16:26

                            Génial ! Je note l'astuce au cas ou, ça peux toujours servir :D
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Tout est possible tant qu'on y croit. 

                            Erreur dans projet sous code blocks

                            × 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