Bonjour, voici le problème.
je programme un composant qui peut prendre différents modes, ces modes étant tous compatibles entre eux. Je veux de manière efficace pouvoir gérer ça.
Je me suis donc dis dans ma petite tête, utilise un champ de bit couplé à des typedef sur les différents modes en s'arrangeant pour que chaque mode ait une valeur qui puissent l'identifier immédiatement dans le champs de bit.
Par exemple:
Donc voila, on voit bien que mes 4 modes ont des représentations binaires qui permettent d'identifier et de coupler chacun des modes dans un champ de bits.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #define MODE_1 0x00000001 #define MODE_2 0x00000002 #define MODE_3 0x00000004 #define MODE_4 0x00000008
En effet,
MODE_1 vaut 0000 0001
MODE_2 vaut 0000 0010
MODE_3 vaut 0000 0100
MODE_4 vaut 0000 1000
Donc je déclare mon champ de bits:
Et voilà, mais maintenant je suis comme un guignol, je n'arrive pas à savoir comment de manière simple affecter un mode à un champ de bit que je déclare.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 typedef struct { unsigned int b0_1 : 1; unsigned int b1_2 : 1; unsigned int b2_3 : 1; unsigned int b3_4 : 1; unsigned int b4_5 : 1; unsigned int b5_6 : 1; unsigned int b6_7 : 1; unsigned int b7_8 : 1; } BITFIELD ;
Donc si je fais:
BITFIELD my_bitfieldmode;
Comment je fais pour gérer de manière simple si je veux dire que my_bitfieldmode fait le mode 1 et le mode 2?
my_bietfieldmode = MODE_1; ça marche pas bien évidemment.
Si quelqu'un a une idée, et j'aimerais pouvoir gérer ça comme ça, même si ça vous parait bête, mais je suis ouvert à tous autres solutions (même si c'est mon maitre de stage qui m'a dis plus ou moins de faire comme ça donc ça m'arrangerait de partir dans ce sens là). Merci d'avance
Partager