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 :

Ordre d'inclusion de fichiers entête


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut Ordre d'inclusion de fichiers entête
    Juste pour avoir un avis.
    Selon vous, il vaut mieux inclure dans quel ordre les fichiers entête.

    Comme fichier entête, je distingue:
    - Les entêtes de la librairie standard (ex: iostream, vector)
    - Les entêtes d'une librairie (ex: boost)
    - Les entêtes de ta propre librairie
    - Les entêtes du projet actuel

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Dans cet ordre . Parfois je permute aussi 1 et 2. D'ailleurs, ça n'a vraiment pas d'importance. Je pense que faire les inclusions par groupe, c'est déjà une bonne chose (l'ordre des groupes importe peu).

  3. #3
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Ok, c'était juste pour avoir un avis extérieur, pour essayer de rendre le code le plus clair et structuré possible

  4. #4
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Cet ordre me parait pas mal.

    Sachant que si tu as des en-têtes précompilés, y mettre :
    - Les entêtes de la librairie standard (ex: iostream, vector)
    - Les entêtes d'une librairie (ex: boost)
    - Les entêtes de ta propre librairie

    mais pas les en-têtes du projet actuel (trop pénible de devoir tout recompiler sur une modif de header).

  5. #5
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par white_tentacle Voir le message
    Cet ordre me parait pas mal.

    Sachant que si tu as des en-têtes précompilés, y mettre :
    - Les entêtes de la librairie standard (ex: iostream, vector)
    - Les entêtes d'une librairie (ex: boost)
    - Les entêtes de ta propre librairie

    mais pas les en-têtes du projet actuel (trop pénible de devoir tout recompiler sur une modif de header).
    Le en-tête précompilé correspond au fichier StdAfx.h d'un projet Visual C++, c'est bien ça? Quel est l'avantage de l'utiliser? Je mets donc toutes les en-têtes que j'utilise dans mon projet sauf ceux du projet?
    Donc dans mes fichiers en-têtes de mon projet, j'aurais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include "StdAfx.h"
    #include "Foo.h"
    #include "Bar.h"
    ?

  6. #6
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Bonjour,

    Il vaut mieux mettre tes propres headers en premier, comme ça tu peux être sûr qu'ils ne dépendent pas de l'inclusion d'un autre header. Exemple : tu utilises size_t dans un prototype, et il est reconnu juste parce qu'un autre header inclut plus haut le déclare.

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Quel est l'avantage de l'utiliser?
    Ils sont précompilés. Donc, 1 première 'pré'-compilation, puis pour tous les fichiers sources, il n'y a plus besoin de les recompiler. Le compilateur utilise cette précompilation. L'avantage est un énorme gain en temps de compilation.
    De base, pour visual, c'est stdafx.h. Mais tu peux le positionner autrement dans les options du projet.

  8. #8
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Ils sont précompilés. Donc, 1 première 'pré'-compilation, puis pour tous les fichiers sources, il n'y a plus besoin de les recompiler. Le compilateur utilise cette précompilation. L'avantage est un énorme gain en temps de compilation.
    De base, pour visual, c'est stdafx.h. Mais tu peux le positionner autrement dans les options du projet.
    Donc je mets tous les headers autre que ceux de mon projet dont j'aurais besoin?

  9. #9
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par Trunks Voir le message
    Donc je mets tous les headers autre que ceux de mon projet dont j'aurais besoin?
    L'idée c'est de mettre ceux que tu ne va pas modifier (ou très très très peu) dans le cycle de dev de ton projet : donc les différentes librairies que tu utilises.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 31/10/2009, 16h42
  2. PB classique d'ordre d'inclusion de fichiers .h
    Par whitespirit dans le forum C++Builder
    Réponses: 1
    Dernier message: 17/12/2007, 12h22
  3. XML Schema et inclusions de fichiers XML
    Par monk31 dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 08/10/2003, 14h17
  4. Inclusion de fichier .h
    Par Tony49 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/11/2002, 11h10
  5. Inclusion de fichiers en IDL
    Par babou dans le forum CORBA
    Réponses: 10
    Dernier message: 30/07/2002, 16h47

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