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 :

A quoi servent les en-têtes précompilés ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 4
    Par défaut A quoi servent les en-têtes précompilés ?
    Bonjour,

    Je souhaite migrer un projet de visual studio standart 2003 vers visual studio express 2005.

    Mon projet utilisait très faiblement les MFC (un peu pour les thread, mais je vais utiliser boost), et je souhaite donc m'en debarrasser puisqu'ils ne sont pas supportés par la version express.

    J'ai viré les stdafx.h et cpp, ainsi que l'option de compilation en-tête précompilé. D'ou ma question : A quoi servent les en-têtes précompilés ?

    D'autre part, il semble que VS Express ne trouve pas non plus les headers winsock2.h et windows.h. Est-ce normal ?

    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    A quoi servent les en-têtes précompilés ?
    A précompiler tout ce qui peut l'être dans les en-têtes qui ne sont jamais ou rarement modifiés (en-têtes standards, MFC, ...). Tu y gagnes donc un peu en temps de compilation.

    D'autre part, il semble que VS Express ne trouve pas non plus les headers winsock2.h et windows.h. Est-ce normal ?
    Tu n'as pas installé le Platform SDK ?

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

    Informations professionnelles :
    Activité : aucun

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

    Comme tu l'as sans doute déjà remarqué, la compilation de tout un projet peut parfois prendre pas mal de temps.

    Comme tu le sais peut etre, la directive préprocesseur include a pour effet de copier le contenu du fichier inclu à l'endroit où se trouve la directive dans le code source.

    Du coup, si tu n'utilises pas les entete précompilées, le processus de compilation risque de prendre encore plus de temps, et, le pire, c'est qu'une bonne partie du processus n'aura pour seul but que de... recompiler maintes et maintes fois - en gros, chaque fois qu'une entete est incluse, y compris du fait des inclusions "indirectes" (de fichier qui inclu une entete qui inclu...) - des parties qui... ont déjà été compilées pour d'autres unités de traductions ...

    Le fait de décider d'utiliser les entetes precompilées a, tout simplement, pour but de dire au compilateur que
    telle entete sera utilisée plusieurs fois... sois sympa, compile la une seule fois, et, par la suite, contente toi d'utiliser le fichier objet que tu auras créé la premiere fois
    et donc, au final, de gagner du temps à la compilation
    [EDIT] Grillé :'(
    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

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 4
    Par défaut
    ok, je comprends l'idée pour les en-têtes précompilés.

    Par contre, j'essaye d'en faire un à ma sauce, et il me répond qu'il ne trouve pas le fichier d'en-tête précompilé. Normal, il faut bien qu'il le compile une première fois non ? J'ai créé des fichiers PrecompiledHeaders.h et cpp à la place de stdafx.h et cpp, et mis le nom PrecompiledHeaders.h dans la conf du projet à l'onglet "En-têtes précompilés". Que dois-je faire d'autre ?

    Désolé pour mon ignorance, mais le SDK n'est pas inclu dans VC express ? Ne devrait-il pas déjà être installer puisque je l'utilisais apparement (sans le savoir) sous 2003 ? Ou puis-je le trouver ?

    Désolé si mes questions paraissent un peu bête, mais je me suis former un peu sur le tas en C++, car je viens du monde Java

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Par contre, j'essaye d'en faire un à ma sauce, et il me répond qu'il ne trouve pas le fichier d'en-tête précompilé. Normal, il faut bien qu'il le compile une première fois non ? J'ai créé des fichiers PrecompiledHeaders.h et cpp à la place de stdafx.h et cpp, et mis le nom PrecompiledHeaders.h dans la conf du projet à l'onglet "En-têtes précompilés". Que dois-je faire d'autre ?
    Pourquoi ne pas utiliser celui que le compilo te génère automatiquement ? Sinon il faut aller touiller dans les options de compilation, tu auras plus d'infos sur le forum VC++.

    Désolé pour mon ignorance, mais le SDK n'est pas inclu dans VC express ? Ne devrait-il pas déjà être installer puisque je l'utilisais apparement (sans le savoir) sous 2003 ? Ou puis-je le trouver ?
    Non il n'est pas inclus, puisque c'est une version Express. Ta version 2003 l'avait puisque c'était une version complète.
    Tu peux le trouver très facilement avec Google ou directement chez Microsoft.
    Tu peux aussi regarder ce tutoriel :
    http://arb.developpez.com/vc++/expre...ation#Linstall

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 4
    Par défaut
    ok, je répond moi-même à ma première question.

    Il faut d'abord faire "créer un fichier d'en-tête précompilé" puis selectionner "utiliser un fincher d'en tête précompilé" ...

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Il faut télécharger les SDK sur le site de VC2005 Express si c'est bien pareil à ce que j'ai fait y'a environ 1 an.
    Il y avait aussi quelque part sur le site une page qui détaille les étapes (fastidieuses et compliquées: impossible à savoir soit même) pour relier les SDK à VC2005 Express.

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

Discussions similaires

  1. à quoi servent les .dsm ?
    Par fidji dans le forum Delphi
    Réponses: 4
    Dernier message: 14/06/2006, 19h37
  2. [MySQL] A quoi servent les réferences entre les tables??
    Par Alain15 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/02/2006, 16h19
  3. A quoi servent les index dans une BDD ?
    Par Melvine dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/10/2005, 12h14
  4. [CR 10] A quoi servent les Templates Fields ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/11/2004, 10h52
  5. [C#] A quoi servent les interfaces???
    Par sof_nns dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/10/2004, 20h51

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