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 :

Que signifie ce code ?


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 79
    Par défaut Que signifie ce code ?
    Bonjour,

    J'ai vu ce code :
    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
    19
    93 struct ccs_err_recovery 
    94         {
    95         u_char  _r1             : 2;    /* reserved                             */
    96         u_char  page_code       : 6;    /* page code                            */
    97         u_char  page_length;            /* page length                          */
    98         u_char  awre            : 1;    /* auto write realloc enabled           */
    99         u_char  arre            : 1;    /* auto read realloc enabled            */
    100         u_char  tb              : 1;    /* transfer block                       */
    101         u_char  rc              : 1;    /* read continuous                      */
    102         u_char  eec             : 1;    /* enable early correction              */
    103         u_char  per             : 1;    /* post error                           */
    104         u_char  dte             : 1;    /* disable transfer on error            */
    105         u_char  dcr             : 1;    /* disable correction                   */
    106         u_char  retry_count;            /* error retry count                    */
    107         u_char  correction_span;        /* largest recov. to be attempted, bits */
    108         u_char  head_offset_count;      /* head offset (2's C) for each retry   */
    109         u_char  strobe_offset_count;    /* data strobe "                        */
    110         u_char  recovery_time_limit;    /* time limit on recovery attempts      */
    111 };
    Mais je ne connais pas cette forme (type variable :1)

    Merci

  2. #2
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Il me semble que c'est de l'allocation de mémoire par ex :

    veux dire que _r1 prendra 2x u_char en mémoire

    m'enfin j'dis ca mais j'en suis pas sur.

  3. #3
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par SnakemaN
    m'enfin j'dis ca mais j'en suis pas sur.
    On n'est jamais oblige de repondre. Cette notation concerne les bitfields.

  4. #4
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Par défaut
    Ce sont des champs de bits.

    Pour plus d'infos, voir par exemple la documentation "C Bit Fields" sur la MSDN :

    http://msdn2.microsoft.com/en-us/lib...0VS.80%20.aspx

  5. #5
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Citation Envoyé par DaZumba
    On n'est jamais oblige de repondre. ...
    méssant ! va !

    Bitfield sur wkipédia
    M'enfin je n'avais pas totallement tord en fin de compte, ça spécifie exactment le nombre de bit a utilisé pour chaque type dans cette structure du moins, non ?

    Et pis d'abord j'ai répondu car cela m'a intrigué egalement, ca peut servir a quoi en fait ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 79
    Par défaut
    On n'est jamais oblige de repondre. Cette notation concerne les bitfields.
    J'ai cherche bitfields dans google mais je n'ai pas trouve de reponses en francais
    Quelqu'un pourrait m'expliquer ?

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par _LVEB_
    J'ai cherche bitfields dans google mais je n'ai pas trouve de reponses en francais
    Si tu veux trouver une réponse en français, recherche sous champ de bits plutôt que bitfield. D'autre part n'importe quel bon livre de C devrait pouvoir apporter une réponse à ta question, en particulier. Kernighan & Richtie, 2ème edition: Le langage C (Section 6.9).

    En revanche, je crois que les champs de bits ne peuvent être utilisés de manière portable qu'avec les types unsigned int et signed int.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ça dépend de l'utilisation que tu cherches à en faire.
    Si tu veux jouer avec des périphériques ou des trames réseau qui prennent les données au bit près, "les champs de bits ne peuvent être utilisés de manière portable" tout court : L'organisation exacte d'un champ de bit dépend de l'implémentation.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 79
    Par défaut
    Merci beaucoup

  10. #10
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Bon une petite explication pour appuyer mes dires :

    Un champ de bit est un membre de structure constitué d'un certain nombre de bits. Vous déclarez ce champ en indiquant le nombre de bits nécéssaires pour recevoir les données.
    Admettons vous ayez des informations à stocker de type oui/non.
    La plus petite entité utilisée dans une structure avec les types de données standards du C est le char. Vous pouvez bien sur faire appel à ce type dans votre membre de srtucture pour enregistrer les données oui non, mais les sept bits sur les huits qui constituent la variable char seront inutilisés. Les champs de bits permettent d'enregister huits réponses "oui/non" dans une seule variable char.
    Et aisi de suite suivant ce que vous avez besoin comme info dans la structure par ex ici
    _r1 ne pourra prendre la 0 ou 1
    tandis que
    page_code ne pourra prendre que les valeurs (regardant la table des carc ASCII pour voir le correspondand)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    binaire | int | ascii
    000000 (0) (null)
    000001 (1) (smiley blanc)
    000010 (2) (smiley noir)
    000011 (3) (coeur)
    000100 (4) (carreau)
    etc... jusqu'a 
    111111 (63) (?)
    Ensuite tu accede a ce champs de cette façon :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Tu déclare une structure
    struct ccs_err_recovery foo;
     
    //Accession aux champs
    foo._r1 = 0;
    ...
    strcpy(foo.retry_count, "y");
    ...

    ouf....

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par _LVEB_
    J'ai cherche bitfields dans google mais je n'ai pas trouve de reponses en francais
    Quelqu'un pourrait m'expliquer ?
    http://emmanuel-delahaye.developpez....s.htm#bitfield

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

Discussions similaires

  1. Que signifie cette ligne de code ?
    Par ysahel dans le forum Débuter
    Réponses: 3
    Dernier message: 22/01/2010, 13h07
  2. Que signifient les [..] placés dans le code
    Par vtuning.net dans le forum C#
    Réponses: 2
    Dernier message: 01/10/2009, 10h22
  3. que signifie le code <br/>
    Par spokaem dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 05/05/2008, 22h08
  4. Que signifie les <> dans un code java?
    Par developper2006 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/01/2008, 15h11
  5. Que signifie cette syntaxe de code ?
    Par SPACHFR dans le forum C
    Réponses: 4
    Dernier message: 02/05/2007, 13h24

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