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

Boost C++ Discussion :

Templates et fichiers binaires (Boost)


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Par défaut Templates et fichiers binaires (Boost)
    Bonjour à tous.

    Je pense que cette question est très bête, mais apparemment quelque chose m'échappe.

    Boost est une bibliothèque qui est censée étendre la bibliothèque standard. A ce titre, c'est une bibliothèque majoritairement composée de templates (complètement ?). Or, les templates ne se compilent pas, il me semble. Leur implémentation est nécessaire dans les en-têtes pour générer autant de code qu'il y a d'instanciation avec paramètres différents de ces mêmes templates.

    Donc, si on ne compile pas les templates, qu'est-ce que c'est que toutes ces bibliothèques binaires, statiques et dynamiques (tous les libboost_filesystem_xxx.lib et consorts) qui ont mis 2 h 30 à être compilés sur ma machine ?


    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Il n'y a pas que des templates.
    Quelques bibliothèques ont aussi des bibliothèques qu'il faut lier. De mémoire regex, filesystem, wave, thread, python, iostreams...

  3. #3
    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
    Donc, si on ne compile pas les templates, qu'est-ce que c'est que toutes ces bibliothèques binaires, statiques et dynamiques (tous les libboost_filesystem_xxx.lib et consorts) qui ont mis 2 h 30 à être compilés sur ma machine ?
    Ce sont les bibliothèques qui ne contiennent pas que du code template.

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Par défaut
    Au temps pour moi. J'ai mal cherché dans la hierarchie des fichiers de Boost. Ma première impression fut que les fichiers cpp étaient tous des fichiers d'exemple... mais non.

    Sinon, pouvez-vous confirmer que, sans l'utilisation du mot clé export (pas encore vraiment implémenté, me semble-t-il), la compilation d'un template ne sert à rien ?

    Merci.

  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
    Sinon, pouvez-vous confirmer que, sans l'utilisation du mot clé export (pas encore vraiment implémenté, me semble-t-il), la compilation d'un template ne sert à rien ?
    C'est pas que ça ne sert à rien, c'est que c'est impossible (sans le mot-clé export, toujours). Tu peux seulement compiler des instanciations.

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Yoxoman
    Sinon, pouvez-vous confirmer que, sans l'utilisation du mot clé export (pas encore vraiment implémenté, me semble-t-il), la compilation d'un template ne sert à rien ?
    Même avec export, il n'y a pas de compilation des templates en C++. Export évite d'introduire des dépendances, mais pour qu'il soit vraiment utile, il faut qu'il soit employé avec un modèle d'instanciation itérée (autrement dit à l'édition de liens). Mais les compilateurs qui l'emploient ont besoin de la définition des templates au moment de leur instantiation. Petite pub personnelle: http://www.bourguet.org/cpp/export.pdf

  7. #7
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Par défaut
    Au temps pour moi (encore). L'erreur venait ici du fait que g++ fait apparemment semblant de compiler un fichier template, probablement par consistance. Mais je viens de découvrir avec effroi qu'il ne bronche pas sur certaines erreurs (hors syntaxe) dans le code du template. Comme si le template était interprété comme un morceau vide de code, s'il est syntaxiquement correct.

    Merci à tous pour vos remarques (et articles ) .

  8. #8
    fd
    fd est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Par défaut Effroi
    Ce n'est pas avec effroi : c'est absolument normal. Les template sont compilé au point d'instanciation
    C'est trés commode ça permet une grande souplesse

Discussions similaires

  1. Afficher un fichier binaire sous Windows
    Par Atomikx dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 14/12/2004, 00h29
  2. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30
  3. [Debutant] Comment lire la taille d'un fichier binaire ?
    Par Invité dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/12/2003, 19h20
  4. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19
  5. fichier binaire ou texte
    Par soussou dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/06/2002, 13h39

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