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 :

Type opaque


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut Type opaque
    Salut, je me baladais tranquillement dans search.h, lorsque je suis tombe nez a nez avec ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /* Opaque type for internal use.  */
    struct _ENTRY;
    Quelqun peut m'expliquer a quoi sert cette definition ?
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  2. #2
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 337
    Points : 130 288
    Points
    130 288
    Billets dans le blog
    1
    Par défaut
    C'est très simple.

    En C il est possible de masquer l'implémentation d'une structure, c'est-à-dire son contenu, mais de travailler quand même avec (en utilisant un pointeur sur cette structure).

    Exemple, je réalise un module pour manipuler des zones de texte. Je peux en manipuler plusieurs, donc pour chaque zone de texte j'ai un pointeur vers la structure qui contient les données, que je passe à chaque fonction. Mais le contenu de la structure, je ne veux pas la dévoiler. Voici comment je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct zdt * zdt_t;
     
    zdt_t creer_zdt(void);
    void detruire_zdt(zdt_t z);
    void ajouter_texte_zdt(zdt_t z, const char* texte);
    Tant que je n'ai besoin ni d'accéder à un membre de la zone de texte, ni de connaître la taille de la structure, je n'ai pas besoin de préciser le contenu de la structure. Je le définirai dans le fichier .c associé.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  3. #3
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Oki, donc si j'ai bien compris, l'implementation sera selon le .h ou le .c inclus.... mais il ne peut pas y avoir plusieurs implementations differentes en meme temps !?
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Gogoye
    Oki, donc si j'ai bien compris, l'implementation sera selon le .h ou le .c inclus.... mais il ne peut pas y avoir plusieurs implementations differentes en meme temps !?
    Normalement non, le but est simplement de cacher le centenu de la structure, c'est de l'encapsulation...

    Maintenant que l'implementation est cachée, qui sait ce qui se cache reelement derriere le type opaque ? Or il est possible de faire en C de l'heritage, donc oui plusieurs implementations sont possibles, mais ce n'est pas le but du type opaque.

    Le but réel c'est de diminuer les dépendances, une modification de la structure n'engendre pas de recompilation des sources l'utilisant an tant que type opaque... et d'éviter une mauvaise utilisation des champs de structure.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Oki, merci !
    "Dis oui à celui qui te dit non, et il te dira peut-être.", Gogoye - Les Proverbes à la Con

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/11/2010, 17h30
  2. Définition de type opaque
    Par _Michel dans le forum C
    Réponses: 27
    Dernier message: 11/06/2008, 23h10
  3. Type opaque en C
    Par Novocaine dans le forum C
    Réponses: 14
    Dernier message: 03/06/2007, 21h37
  4. types opaques
    Par champijulie dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/06/2005, 09h53
  5. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36

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