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 :

Quelle nomenclature pour les fichiers de définition des fonctions template ou inline?


Sujet :

C++

  1. #1
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut Quelle nomenclature pour les fichiers de définition des fonctions template ou inline?
    Bonjour,

    pour les fonctions inline et template, je préfère séparer les déclarations et les définitions dans deux fichiers séparés.

    Ayant commencé à développer avec netbeans, j'ai utilisé l'extension .tcc pour les fichiers de définitions.
    Par exemple, pour une classe A, je dispose de trois fichiers :
    A.hpp -> contient la déclaration de la classe
    A.tcc -> contient les définitions des fonctions template et inline
    A.cpp -> contient les définitions des fonctions non template et non inline

    Je suis passé récemment à Visual.
    L'éditeur de l'EDI ne reconnaît par l'extension tcc et ne fournit pas de coloration syntaxique pour ces fichiers.
    Je sais qu'il y a une solution technique pour ajouter cette extension à Visual mais ça ne m'intéresse pas parce que j'aurai le même problème en changeant à nouveau d'EDI ou d'éditeur.

    Du coup, j'envisage d'utiliser l'extension hpp en lieu de tcc et de ne plus nécessairement conserver le nom de ma classe pour nommer les fichiers :
    A.hpp -> contient la déclaration de la classe
    A_inline.hpp -> contient les définitions des fonctions inline
    A_template.hpp -> contient les définition des fonctions template non inline
    A.cpp -> contient les définitions des fonctions non template et non inline

    J'ai deux questions à ce propos :
    1. comment empêcher à l'utilisateur d'inclure A_inline.hpp et A_template.hpp ?
    Il me semblait avoir vu une technique pour faire cela dans une bibliothèque (je pensais que c'était blitz mais je n'ai rien retrouvé).
    2. connaissez-vous une meilleure approche?

    Merci

  2. #2
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Pour faire ca, avant d'inclure les dits fichiers je #define un symbole bidon que je check dans le. tcc Et qui émets un #error si il est inclus comme un cochon

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Merci pour ta réponse Joel F.
    Il me semble que c'est ce genre de truc que j'avais vu.
    Donc pour le A.hpp ça donnerait un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #ifndef A_HPP
    #define A_HPP
     
    class A
    {
        // déclarations
    };
     
    // inclusion du fichier de définition des fonctions inline
    #define OK_A_INLINE_HPP
    #include "A_inline.hpp"
     
    // inclusion du fichier de définition des fonctions template non inline
    #define OK_A_TEMPLATE_HPP
    #include "A_template.hpp"
     
    #endif
    et pour le A_inline.hpp, on aurait par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #ifndef OK_A_INLINE_HPP
    #error please include A.hpp
    #endif
     
    // définition des fonctions inline
    C'est bien ça?

  4. #4
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    ouaip

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Super, merci!

    Remarque : c'est débile j'ai fait deux symboles bidons mais un seul suffit.

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/08/2010, 23h57
  2. Réponses: 13
    Dernier message: 16/09/2009, 18h32
  3. Réponses: 6
    Dernier message: 04/06/2008, 23h50
  4. disparition des options pour les fichiers cachés
    Par ph4prod dans le forum Windows XP
    Réponses: 8
    Dernier message: 07/08/2007, 02h28
  5. [ASA] Quelle extention pour les fichiers de données?
    Par Goldorak2 dans le forum SQL Anywhere
    Réponses: 2
    Dernier message: 07/12/2005, 09h28

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