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 :

inclusions de headers dans un projet


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 16
    Par défaut inclusions de headers dans un projet
    Bonjour,

    J'ai actuellement 2 projets distincts A et B avec chacun beaucoup de classes, et j'aimerais utiliser dans mon projet A l'ensemble de mes headers du projet B (c'est pour utilisation du modèle 3 tiers).

    C'est assez lourd d'inclure tous les headers 1 par 1, et j'aimerais savoir de ce fait s'il est possible d'inclure directement par une commande tous les headers d'un même répertoire.

    Remarque : j'utilise Visual Studio


    Merci d'avance
    Cordialement

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Je suppose que tu essayes de créer une bibliothèque (?)

    Dans ce cas là, tu peux créer un header "maBiblio.h" incluant tous les headers de ta bibliothèque (ou les principaux) ainsi tu n'aura plus qu'à faire un seul include.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 16
    Par défaut
    En effet, je n'avais pas pensé à cette possibilité.

    Merci pour ta réponse

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 643
    Par défaut
    Salut,

    En effet, tu peux le faire...

    Mais, en pratique, je te déconseille de le faire, surtout si les deux projets sont importants

    En effet, je serais particulièrement surpris que tous les fichiers d'implémentation de ton projet A aient, de manière systématique, besoin de l'ensemble des classes issues du projet B.

    Or, il faut savoir que la commande préprocesseur #include a pour effet de littéralement copier (de manière récursive) le contenu du fichier indiqué.

    Si, donc, tu en arrives (et c'est ce qui se passera de manière systématique si tu suis ce chemin) à inclure des fichiers d'en-tête qui ne sont pas indispensables, tu vas augmenter énormément, et pour strictement rien, le nombre de lignes que le compilateur doit parser et analyser.

    La conséquence directe de cette augmentation est, tu t'en doutes, une augmentation du temps nécessaire à la compilation des différents fichiers d'implémentation (*.cpp) .

    Alors, s'il n'y avait que quelques "fichiers d'implémentation" et qu'il ne s'agissait que de "quelques lignes inutiles" apportées par les fichiers inclus, ma foi, peut être que cela ne se sentirait pas trop au niveau du temps nécessaire à compiler le projet A... (passer de 7 secondes à 10 pour compiler le projet A, est-ce si grave )

    Mais si tu as beaucoup de lignes inutiles rajoutées dans un nombre important de fichiers d'implémentation, ca devient tout de suite beaucoup plus embêtant (si tu passe de 5 minutes à 20 pour compiler ton projet, c'est très certainement grave )

    Et le problème, c'est que le fait d'inclure systématiquement tous les fichiers d'en-tête du projet B dans les fichiers du projet A risque très fort de te mettre dans la deuxième situation

    Dés lors, comme je le disais au début de mon intervention, en effet, tu peux faire ce genre de chose (comprend: il n'y a pas vraiment de limitation technique ni d'incompatibilité pour t'en empêcher), mais, tu avoueras que c'est très certainement une mauvaise idée au vu du prix que tu va payer en terme de durée de la compilation.

    Au final, tu seras sans doute beaucoup mieux avisé de simplement rajouter uniquement les fichiers d'en-tête qui t'intéressent, et mieux encore, d'utiliser dans les fichiers d'en-tête du projet A les déclarations anticipées "chaque fois que faire se peut", de manière à éviter, autant que faire se peut, que l'inclusion d'un fichier d'en-tête du projet A n'implique l'inclusion d'un fichier d'en-tête du projet B inutile
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 16
    Par défaut
    C'est vrai qu'après réflexion, comme tu le dis, ça risque d'être problématique.
    Je rajouterai uniquement les headers dont j'ai besoin pour le coup.

    Merci à tous les deux pour votre aide !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par jj_du_12 Voir le message
    C'est vrai qu'après réflexion, comme tu le dis, ça risque d'être problématique.
    Je rajouterai uniquement les headers dont j'ai besoin pour le coup.
    Attention : tu n'as souvent besoin dans les .h que de déclarations anticipées.

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 643
    Par défaut
    Citation Envoyé par oodini Voir le message
    Attention : tu n'as souvent besoin dans les .h que de déclarations anticipées.
    Du moins, tant que tu te limite à l'utilisation de pointeurs (de préférence intelligents) ou de références et que tu n'essayes pas d'accéder à ce qui est exposé par la classe, en effet.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/07/2010, 10h25
  2. [Tomcat 6.0] Inclusion de projets Java dans un projet Tomcat
    Par TekP@f dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 31/07/2009, 11h11
  3. inclusion de lib dans les projets
    Par stachus dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 22/11/2007, 11h56
  4. Réponses: 1
    Dernier message: 03/03/2007, 12h28
  5. Réponses: 5
    Dernier message: 07/03/2006, 13h03

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