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 :

#include emboité probleme


Sujet :

C++

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Par défaut #include emboité probleme
    Bonjour tout le monde.

    J'ai un soucis de #include qui commence a me faire tomber les cheveux (a force de tirer dessus d'enervement.. ).

    Le probleme est assez "simple" tout du moins a expliquer : voila le soucis :
    J'ai mon main qui include le fichier "Simu.hpp".
    Ce dernier include 4 differents fichiers ObjectComplex.hpp, IO.hpp et GUI.hpp et handleWindow.hpp

    ObjectComplex.hpp include lui-meme 3 ficihiers ObjetSimple (Resistor, Capacitor, Electrode.hpp) qui chacun include "ElectricComponent.hpp" : ce dernier include <math.h> et algorithm.hpp

    IO.hpp include "Current.hpp", "PS.hpp" et Voltage.hpp ; ces derniers uncludant a eux tous "algorithm.hpp" et <string> et <iostream>

    Enfin, GUI.hpp include 3 boutons (pour gerer les InputOutput : CurrentButton.hpp, VoltageButton.hpp et PSButton.hpp) qui chacun include "algorithm.hpp" et <math.h>, et egalement la librairie que j'utilise (SFML).

    Jusque la, aucun probleme, ca compile bien etc..
    Le probleme vient maintenant : je cherche a implementer dans "algorithm.cpp" une fonction qui prend en entrée une Simu (car faisant des calculs a la fois sur IO, et ObjectComplex). De facon 'naturelle' (selon moi tout du moins =p), j'include donc Simu.hpp dans "algorithm.hpp" - et la .... tout crash a la compil : je recois des centaines d'erreur

    Voila, je pourrais creer la fonction qui m interesse (ce que j ai d'ailleurs fait pour le moment) dans Simu, mais cette fonction est purement algorithmique, elle se sert juste de plusieurs data pour ne rien modifier mais juste retourner un 'double' qui m'interesse (d'ou ma volonté de mettre cette fonction dans algo).

    Les messages d'erreur ressemblent a peu pres tous a ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error C2061: syntax error : identifier 'InputOutput'
    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    ( la deuxieme erreur découle de la premiere je suppose .. )
    Juste pour preciser, tout mes .hpp sont sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef TOTO_H
    #define TOTO_H
    // here #include.hpp and function signatures
    #endif

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Aurais-tu des dépendances cycliques?
    A demandant B et B demandant A? Dans ce cas il faut que tu fasses une forward declaration.

    EDIT: Si tu utilises des pointeurs en paramètre ou fonction membre. N'inclus jamais tes .h mais fais une forward declaration, ca te permet deux choses : ne pas avoir de problème de dépendances et accélérer la compilation (inclus iostream ou windows.h pour voir la différence... )

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Par défaut
    J'ai en effet des dependances cycliques. Simu a besoin de fonctionnalites de algo et algo a besoin de connaitre le type Simu.

    Je vais me renseigner sur "forward declaration" ..
    Merci Astraya

    Edit : Simple constatation sur mon code (mais je comprends vraiment pas du tout d'ou ca vient - j'essaie de debugger les #include en step by step, et mon programme compile lorsque je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include "current.hpp"
    #include "power_supply.hpp"
    #include "voltage.hpp"
    dans "algo.hpp" et ne compile PAS lorsque je fais ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #include "input_output.hpp"
    alors que input_output.hpp ressemble a ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #ifndef INPUT_OUTPUT_H_
    #define INPUT_OUTPUT_H_
     
    #include "current.hpp"
    #include "power_supply.hpp"
    #include "voltage.hpp"
     
    class InputOutput 
    {
      // CODE class
    };
    #endif
    Quelqu'un a une explication ?

  4. #4
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Donnes toujours les d'erreurs lorsque tu dis que cela ne compile pas s'il te plait. un simple copier coller fera l'affaire

    Merci

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Par défaut
    Ce sont toujours les memes messages d'erreur i.e.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    error C2061: syntax error : identifier 'Current'
    error C2143: syntax error : missing ';' before '&' 
    error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    le "missing ;" marche tres bien lorsque je mets pas #include "input_output.hpp" mais les 3 include comme expliques precedemment.

    Je sais pas d'ou ca vient, j'essaie de tout passer en forward declaration.
    A ce propos, l'exemple ici est-il bien ?
    Je trouve ca plutot moche de mettre tous les .h dans le .cpp ..

    Edit : parler de moche/beau parle (of course =p) de clarté du code et non de stylisme artistico-graphique =)

  6. #6
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Bonjour,

    a ce que je vois c'est toujours un problème de déclaration. Ça dois être un vrai bord*l

    Je trouve ca plutot moche de mettre tous les .h dans le .cpp ..
    En quoi c'est moche? nous ne faisons pas de la peinture mais de la programmation. Dans un .cpp tu n'as pas de problème de loop dans les includes, tu accélères ta compilation. Bref, dire que c'est pas beau est un argument qui n'a rien a faire en programmation ^^
    As-tu forward ta classe Current? car il semble que son include ne soit pas pris en compte.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Include a problemes
    Par SaynRauliee dans le forum Apache
    Réponses: 2
    Dernier message: 03/12/2008, 13h59
  2. #include problem
    Par slate dans le forum C++
    Réponses: 4
    Dernier message: 20/11/2005, 13h46
  3. Réponses: 1
    Dernier message: 08/09/2005, 19h53
  4. Probleme d'include XML/XSL en ASP
    Par baygz dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 02/07/2004, 16h38
  5. probleme de #include en C++ .NET
    Par CHIERA dans le forum MFC
    Réponses: 2
    Dernier message: 27/02/2004, 11h04

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