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 :

champs de structure


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Par défaut champs de structure
    bonjour,
    je comprend pas ce que veulent dire les :4 :2 devant les champs ?

    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
     
    struct OmTcData {
        // Byte 0:
        // Frame number (units):
        uint framesUnits:4;
        // Binary group 1:
        uint binaryGroup1:4;
        // Byte 1:
        // Frame number (tens):
        uint framesTens:2;
        // TRUE ==> drop-frame, FALSE ==> non-drop-frame, for FldRate59_94Hz;
        // reserved, for FldRate50Hz:
        uint dropFrame_59_94:1;
        // Color-frame marker:
        uint colorFrame:1;
        // Binary group 2:
        uint binaryGroup2:4;
        }

  2. #2
    Membre éprouvé Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Par défaut
    Cela veut dire que tu créé un champ de bit, le indique que la variable tient sur x bit. Ainsi cela permet de *découper* un entier en plusieurs morceaux de y bits.

  3. #3
    Membre confirmé Avatar de coax81
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 180
    Par défaut
    mais quand je fais :
    ce la veu dire que framesUnits est de taille 4 bits , ou bien de taille 4* uint ??

  4. #4
    screetch
    Invité(e)
    Par défaut
    4 bits

    c'est un indice au compilateur, ce n'est pas forcement supporte il me semble, mais dans la mesure du possible il essayera d'allouer 4 bits pour ce champ et de laisser de la place pour le reste derriere.

  5. #5
    Membre éprouvé Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Par défaut
    en fait quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TYPE var : TAILLE;
    Cela veut dire que var est un morceau de TYPE de taille TAILLE bits.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    struct St
    {
      // commence un entier 32-bit que l'on va découper en deux morceaux pour simplifier son accès.
      uint partie1 : 16;
      uint partie2 : 16;
      // commence un entier 16-bit que l'on va découper
      ushort partie3 : 4;
      ushort partie4 : 12;
    };
    Je ne sais pas si c'est très clair...

  6. #6
    screetch
    Invité(e)
    Par défaut
    ca ne marche qu'avec (unsigned) int je crois.

    doc de PC-Lint :

    46 Field type should be int -- Bit fields in a structure
    should be typed unsigned or int. If your compiler allows
    other kinds of objects, such as char, then simply suppress
    this message.

  7. #7
    Membre éprouvé
    Inscrit en
    Mai 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2007
    Messages : 157
    Par défaut
    ca revient un peu a faire une union d'element dans le principe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef union
    {
        struct {
            WORD IP_Dst_Cte_field;
            WORD IP_Dst_link;
        } detail;
        DWORD IP_Dst_Add;
    }IP_DEST_ADD;

  8. #8
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Et bien non justement, d'après ce que je comprends de ce qui a été dis plus haut, tous les champs de la structure seront utilisables en même temps, ce qui n'est pas vrai pour l'union. J'imagine par contre que cela engendre une petite perte de rapidité à l'utilisation, mais on gagne en espace mémoire ?

Discussions similaires

  1. erreur de segmentation sur affectation champ enum structure
    Par marion5515 dans le forum Débuter
    Réponses: 9
    Dernier message: 24/02/2010, 11h51
  2. Changer les variables d'un champ de structure
    Par elemarec dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/08/2009, 17h18
  3. Enregistrement d'un champ de structure
    Par Bktero dans le forum MATLAB
    Réponses: 2
    Dernier message: 31/07/2009, 11h50
  4. Réponses: 8
    Dernier message: 13/11/2008, 21h28
  5. Réponses: 2
    Dernier message: 18/12/2006, 18h03

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