begin process at 2012 05 28 20:05:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

Définition structure


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Définition structure

dimanche 8 novembre 2009 à 23:21:30 | Définition structure

Willi

Membre Club Administrateur CodeS-SourceS
Bonsoir,

Que signifie la valeur qui suit les ':' d'un membre d'une structure ? (Voir ci-dessous)

Code C/C++ :
typedef struct {
	ULONGLONG Member1:48;
	ULONG Member2:16;
} MASTRUCT,*LPMASTRUCT;


Merci.
lundi 9 novembre 2009 à 07:22:43 | Re : Définition structure

Lucky92

Bonjour,

Cette syntaxe permet de définir des champs de bits.
Dans ton exemple, Membre1 est un champ de 48 bits ( sur un entier non signé de 64 bits )et Membre2 est un champ de 16 bits ( sur un entier non signé de 32 bits ).
Par contre ces champs de bits ne sont pas "packés", c'est-à-dire qu'il ne sont consécutifs en mémoire ; pour cela il aurait fallu les déclarer comme suit :

Code C/C++ :
typedef struct {
	ULONGLONG Member1:48; //48 premiers bits d'un 64 bits
	ULONGLONG Member2:16; //16 bits suivants
} MASTRUCT,*LPMASTRUCT;


Par conséquent, dans ton exemple la définition des champs de bits est inutile.
Cordialement,
Lucky92.
lundi 9 novembre 2009 à 08:31:19 | Re : Définition structure

fregolo52

Membre Club
Ah les champs de bits !!
Pour ma culture perso.

Lucky si je comprends ce que tu dis :
- la structure de Willy fait 12 octets (taille de ULONGLONG + ULONG)
- ta structure fait 8 octets (parce que le champ de bits tient dans un seul ULONGLONG)

C'est ca ?

(encore un truc affreux à comprendre pour ceux qui viennent de VB).
lundi 9 novembre 2009 à 16:19:29 | Re : Définition structure

Willi

Membre Club Administrateur CodeS-SourceS
Je sais que ma définition est inutile ici c'est juste la notation des :xx qui m'interessait.
Merci pour l'explication.
lundi 9 novembre 2009 à 16:23:08 | Re : Définition structure

BruNews

Administrateur CodeS-SourceS
"La structure de Willy fait 12 octets..."
ben ça serait malheureusement encore trop simple.

Compilée pour OS 32 bits:
- en "PACK 4" alors ok fera 12 octets.
- en "PACK 8" fera 16 octets, le compilo ajoutant un DWORD de cadrage.
A noter que cadrée sur 4, la structure ne souffre d'aucune pénalité car l'adressage 8 n'existe pas sur OS 32 (enfin voués à disparaitre), c'est 4 ou alors 16 pour instructions SSE packées. Le __int64 sur OS 32 n'est rien d'autre qu'une paire de 2 DWORDs (EDX:EAX) et se voit donc adressé en 2 fois.

Compilée pour OS 64:
- C'est 16 octets à tout coup. Adresser 8 octets sur une adresse non multiple de 8 serait gravement nuisible aux perfs.

ciao...
BruNews, MVP VC++
lundi 9 novembre 2009 à 19:03:21 | Re : Définition structure

Willi

Membre Club Administrateur CodeS-SourceS
Dans mon cas cette structure doit est alignée à l'octet
#pragma pack(1)

Merci Brunews c'est très interessant tout ca !!


Cette discussion est classée dans : code, structure, définition


Répondre à ce message

Sujets en rapport avec ce message

#include circulaires [ par abubu38 ] Salut, J'ai un gros probleme de compilation au niveau des .h :fichier f1.h : #include f2.h class A { // définition nécéssitant la classe pb de définition :s truc bizarre rencontré... [ par Gendal67 ] Kikoo all! :-)Me revoila dans de nouvelles aventures...et cte coup-ci, il ne s'agit pas d'un blocage dans mon code mais d'une définition qui m'empeche Structure avec un fichier [ par orangepulpe57 ] Bonjour,Je doit réaliser pour la fac un programme qui convertit le code morse en caractère. Le code morse est inscrit sur un fichier txt comme suit:A Passage structure en argument. [ par macbang ] Bonjour,J'ai un petit problème avec mon programme.Le but est de découper une chaine de caractère, puis de l'analyser dans une autre fonction.je déclar Structures nommées incompréhensible ... à l'aide [ par otterc8 ] Bonjour, voila j'ai ce bout de code que je ne comprends pas top, malgré des recherches sur les structures, il y a des choses que je ne comprends pas! °'** Langage C **'° [ par while_stri ] Bonjour à tous. Je code un programme en C et j'utilise de nombreux pointeurs sur structure.  Lorsque je passe le pointeur dans un sous-programme et qu Tri tableau de structure [ par chental ] Salut à tous,Quelqun pourrait m'aider à trier à un tableau de structure ?Tri par nom et code;j'essaie le qsort mais je n'y arrive pasVoici ma structur structure en c [ par vercd7am ] Bonjour, j'aurais voulu m'enleve un doute sur les structures en c. Disons que je definis une structure [code=cpp]struct bidule { int bibi; char bobo Initialisation de structure [ par goutbouyo ] Salut,J'ai une structure temps:struct temps { float time, elapsedTime, lastTime;};Je l'itinialise :<table border=0 cel BJR JE DEMANDE DE LAIDE CONCERNANT LE FAIT DE FAIRE DES ENREGITREM AVC LES FICHIER SUR LE CAS DES STRUCTURE [ par BAWSEUR ] J ÉCRIS UN CODE EN SES CONSERANT LES FICHIER . JAI UE STRUCTURE DS MON CODE ET J VE RÉALISER UN ENREGISTREMENT MAI J NI ARRIVE PA .SI J POUVAIS AVWR U


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,796 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales