La version courte est la suivante: Comment apprendre la taille (en bits) d'un champ individuel d'un champ C++?Obtention de la taille d'un champ individuel à partir d'un champ de structure C++
Pour clarifier les choses, un exemple du champ je parle:
struct Test {
unsigned field1 : 4; // takes up 4 bits
unsigned field2 : 8; // 8 bits
unsigned field3 : 1; // 1 bit
unsigned field4 : 3; // 3 bits
unsigned field5 : 16; // 16 more to make it a 32 bit struct
int normal_member; // normal struct variable member, 4 bytes on my system
};
Test t;
t.field1 = 1;
t.field2 = 5;
// etc.
Pour obtenir la taille de l'ensemble de l'objet de test est facile, nous disons simplement
sizeof(Test); // returns 8, for 8 bytes total size
Nous pouvons obtenir un membre struct normal par
sizeof(((Test*)0)->normal_member); // returns 4 (on my system)
Je voudrais savoir comment obtenir la taille d'un champ individuel, disons Test :: field4. L'exemple ci-dessus pour un membre struct struct ne fonctionne pas. Des idées? Ou quelqu'un sait-il une raison pour laquelle cela ne peut pas fonctionner? Je suis assez convaincu que sizeof ne sera pas utile car il ne fait que retourner la taille en octets, mais si quelqu'un sait le contraire, je suis tout ouïe.
Merci!
Je pense que vous pourriez être encerclé, mais j'aimerais me tromper. –
Je voudrais saisir cette opportunité pour continuer ma croisade contre les champs de bits - ne les utilisez pas: http://stackoverflow.com/questions/289900/why-this-unions-size-is-2-with- bitfields/290855 # 290855 –