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 :

organisation des instructions du pre processeur


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 73
    Par défaut organisation des instructions du pre processeur
    bonjour à tous !

    Je suis sur un projet wxWidgets mais mon problème est plus lié a la compréhension du C++ ou du C

    Sur ce projet j'ai 8 fichiers .h et autant de .cpp

    En partant d'un tutoriel, pour organiser mes #include (car plusieurs classe s'appellent entres elles), j'ai fait:
    Dans mes .cpp un #include du fichier .h correspondant
    et dans tous les .h:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #ifndef NOM_DU_FICHIER_H
    #define NOM_DU_FICHIER_H
     
    #include tous les noms des autres fichiers .h
     
    .....mon code...
     
    #endif

    Le probleme est que maintenant j'ai des erreurs "error: ISO C++ forbids declaration of `PanMenu' with no type"

    Donc ma class PanMenu n'est pas reconnu pourtant mon fichier panmenu.h est bien inclus....

    ça marchait pourtant avant que je me lance dans cette re-organisation....

    Comment organise t'on les include ?

    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Apparemment dans ton cas les fichiers .h doivent être inclus dans un certain ordre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include tous les noms des autres fichiers .h
    #include que ceux dont tu as vraiment besoin dans ton fichiers .h, pas les autres.

    Puis, dans ton main, inclus les fichiers .h dans le bon ordre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 73
    Par défaut
    Merci de ta reponse.

    Je me suis demandé aussi si l'ordre était important.
    Mais comment savoir l'ordre de compilation des fichiers (avec les instructions peu être..) j'ai essayé de coller aux instructions, sans resultat.

    Bon je vais essayer ce que tu me dis.

    Merci encore


    PS: ça a fonctionné.....Cependant j'avance a taton, sans réel logique. Enfin si, je pensais devoir ajouter l'entête .h contenant la classe que je cherche a ajouter mais le résultat n'est pas au rendez vous...C'est embêtant.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Par défaut
    L'ordre d'inclusion des fichiers n'a pas d'importance, et fais attention de ne pas te tromper avec tes #ifndef NOM_DU_FICHIER_H #define NOM_DU_FICHIER_H .
    Et chaque fichier ne devrait inclure que le minimum dont il a besoin.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 73
    Par défaut
    Et bien apparement il y a une importance dans l'ordre car enchangeant les erreurs sont differentes.
    De plus en ne faisant qu'inclure tous les fichiers a partir du point depart (mon init) je me suis rendu compte que 2 classes avaient besoin d'être chargées ensembles....

    Je m'explique:
    la classe B a besoin que la classe A soit declarée avant et la classe A a besoin que la classe B soit declarée aussi avant....

    un casse tête !

  6. #6
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Par ex:

    Code A.hpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #ifndef GUARD_A
    #define GUARD_A
     
    class B;
     
    class A
    {
        B *item;
        ...
    };
     
    #include "B.hpp"
     
    #endif

    Code B.hpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #ifndef GUARD_B
    #define GUARD_B
     
    #include "A.hpp"
     
    class B : public A
    {
        ...
    };
     
    #endif

    Voilà un exemple où B a besoin d'être déclarée avant A et A d'être définie avant B

Discussions similaires

  1. Liste des instructions de la bibl. std c++
    Par BBric dans le forum SL & STL
    Réponses: 7
    Dernier message: 29/10/2004, 00h02
  2. Organisation des classes
    Par R3iTt0R dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2004, 17h27
  3. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39
  4. Mesurer le temps des instructions
    Par luckylucke dans le forum Assembleur
    Réponses: 9
    Dernier message: 03/09/2003, 21h23

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