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

MFC Discussion :

fichiers h et cpp


Sujet :

MFC

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut fichiers h et cpp
    Bonjour,
    J'ai créé un projet Win32 Console Application.
    Mon fichier projet.cpp est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    #include "projetessai.h"
    int main(int argc, char* argv[]) 
    { 
       Personne p("u",0); 
       p.getNom(); 
       return 0; 
    }



    Mon fichier projet.h est le suivant:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #ifndef PERSONNE_H
    #define PERSONNE_H
    #include "string.h"
     
    class Personne { 
     
    protected: // Membres protégés 
      char * nom; 
      char * adresse; 
     
    public:    // Membres publics 
     
      // Constructeur qui prend en paramètre une chaî;ne de caractères 
      // pour le nom et optionnellement une chaîne pour l'adresse 
      Personne(const char * name, const char * adress = 0) { 
        this->setNom(name); 
        this->setAdresse(adress);    
      }  
     
      // Retourne le nom de la personne 
      const char * getNom() const { return nom; } 
     
      // Défini le nom de la personne 
      void setNom(const char * name) { 
        if(name) { 
          nom = new char[strlen(name)]; 
          strcpy(nom, name); 
        } 
        else nom = 0; 
      } 
     
      // Retourne l'adresse de la personne 
      const char * getAdresse() const { return adresse; } 
     
      // Défini l'adresse de la personne 
      void setAdresse(const char * adress) { 
        if(adress) { 
          adresse = new char[strlen(adress)]; 
          strcpy(adresse, adress); 
        } 
        else adresse = 0; 
      } 
     
    };
     
    #endif
    J'ai bien employé la règle des .h et .cpp et j'obtiens à la compilation du .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fatal error C1010: unexpected end of file while looking for precompiled header directive
    Quel est le problème?

    Merci

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    de plus ton code à un bug , le new que tu fais n'est pas assez grand
    c'est strlen(adress)+1 ,pour reserver la place du '\0' avec strcpy.
    et je ne vois pas la liberation de la memoire allouée.
    utiliser la classe string de la stl evitrait ce genre de probleme..
    sauf si c'est un exercice avec les char *.

  4. #4
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut
    l'histoire du \0 ne concerne pas le message d'erreur.
    De plus rajouter #include "stdafx .h" n'est pas la solution car le message demeure.

    Quel est donc le problème du petit programme précedent, donc?

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    il faut faire cet include en premier lieu

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par patrick_lassaly
    l'histoire du \0 ne concerne pas le message d'erreur.
    De plus rajouter #include "stdafx .h" n'est pas la solution car le message demeure.

    Quel est donc le problème du petit programme précedent, donc?
    excuse moi de t'avoir dérangé .

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    #include "stdafx .h"
    #include "projetessai.h"
    int main(int argc, char* argv[]) 
    { 
       Personne p("u",0); 
       p.getNom(); 
       return 0; 
    }
    Cette façon ne fonctionne pas en rajoutant #include "stdafx .h"

  8. #8
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut
    Que signifie "en premier lieu"?

  9. #9
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    include "projetessai.h"

    Mon fichier projet.h est le suivant:
    Ton fichier c'est projet.h ou projetessai.h ?

  10. #10
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut
    .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    #include "stdafx.h"
    #include "projetessaibis.h"
     
    int main(int argc, char* argv[])
    {  
    	Personne p("u",0); 
       p.getNom(); 
       return 0; 
    }
    .h:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    #ifndef PERSONNE_H
    #define PERSONNE_H
     
    #include "string.h"
     
     
     
    class Personne { 
     
    protected: // Membres protégés 
      char * nom; 
      char * adresse; 
     
    public:    // Membres publics 
     
      // Constructeur qui prend en paramètre une chaî;ne de caractères 
      // pour le nom et optionnellement une chaîne pour l'adresse 
      Personne(const char * name, const char * adress = 0) { 
        this->setNom(name); 
        this->setAdresse(adress);    
      }  
     
      // Retourne le nom de la personne 
      const char * getNom() const { return nom; } 
     
      // Défini le nom de la personne 
      void setNom(const char * name) { 
        if(name) { 
          nom = new char[strlen(name)]; 
          strcpy(nom, name); 
        } 
        else nom = 0; 
      } 
     
      // Retourne l'adresse de la personne 
      const char * getAdresse() const { return adresse; } 
     
      // Défini l'adresse de la personne 
      void setAdresse(const char * adress) { 
        if(adress) { 
          adresse = new char[strlen(adress)]; 
          strcpy(adresse, adress); 
        } 
        else adresse = 0; 
      } 
     
    }; 
     
    #endif
    message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    fatal error C1083: Cannot open precompiled header file: 'Debug/projetessaibis.pch': No such file or directory
    Quel est le problème?

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    ton parametrage de ton projet ne doit pas etre correcte : le fichier stdafx.h ne doit pas etre présent ainsi que stdafx.cpp dans le projet (?).

    ou tu n'as pas choisis la bonne option pour la génération des entetes precompilés. dans vc6 (onglet C++/precompiled headers) c'est la derniere option avec stdafx.h renseigné pour le nom.

    sinon tu as la possibilité de desactiver l'option des entetes précompilés dans ton projet.

  12. #12
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    stdafx.h n'est pas obligatoire tout comme stdafx.cpp surtout pour un projet console.

    #include "projetessaibis.h"
    Est-ce que ce fichier est inclus dans ton projet ? Est-ce que ce fichier existe physiquement dans le PATH ?

    PS : c'est quelle version de visual que tu as la .net ?

  13. #13
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut
    projetessaibis.h est le nom du fichier .h qui existe dans le projet.
    C'est un petit programme très simple.
    omettre la ligne concernant stdafx.h ammène l'erreur C1010

    Je demande la résolution de l'erreur C1083 seulement.

    version: Visual C++ 6.0

  14. #14
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    Citation Envoyé par patrick_lassaly
    projetessaibis.h est le nom du fichier .h qui existe dans le projet.
    C'est un petit programme très simple.
    omettre la ligne concernant stdafx.h ammène l'erreur C1010

    Je demande la résolution de l'erreur C1083 seulement.

    version: Visual C++ 6.0
    Citation Envoyé par farscape
    ton parametrage de ton projet ne doit pas etre correcte : le fichier stdafx.h ne doit pas etre présent ainsi que stdafx.cpp dans le projet (?).

    ou tu n'as pas choisis la bonne option pour la génération des entetes precompilés. dans vc6 (onglet C++/precompiled headers) c'est la derniere option avec stdafx.h renseigné pour le nom.

    sinon tu as la possibilité de desactiver l'option des entetes précompilés dans ton projet.
    relis ce qui a été dit

  15. #15
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    c'est meme le mieux

  16. #16
    Inactif
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 23
    Par défaut
    Lorsque je sélectionne not using precimpiled header files, je n'ai plus d'erreur à compile puis à build puis à execute.

    Cependant le problème demeure, en effet j'attends le résultat de l'exécution du programme, c'est à dire l'affichage de la fonction getNom() et j'obtiens "press any key to continue".

  17. #17
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Citation Envoyé par patrick_lassaly
    Lorsque je sélectionne not using precimpiled header files, je n'ai plus d'erreur à compile puis à build puis à execute.

    Cependant le problème demeure, en effet j'attends le résultat de l'exécution du programme, c'est à dire l'affichage de la fonction getNom() et j'obtiens "press any key to continue".
    Tu abuses un peu la...


Discussions similaires

  1. Réponses: 0
    Dernier message: 31/08/2010, 15h13
  2. Réponses: 4
    Dernier message: 05/05/2010, 16h50
  3. classe template separe en fichier header et cpp
    Par S_ami dans le forum Langage
    Réponses: 6
    Dernier message: 03/06/2009, 11h30
  4. Convertion du fichier .exe vers .cpp
    Par p_programmeur dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 11/04/2009, 18h24
  5. [POO] fichier .h et .cpp
    Par Royd938 dans le forum C++
    Réponses: 9
    Dernier message: 18/07/2006, 10h19

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