Savoir quel membre d'une union est utilisé
Bonjour à tous,
Pour représenter un type de données, j'ai l'union suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11
| typedef union
{
short brut;
struct
{
unsigned codeop : 6;
unsigned mode : 4;
unsigned source : 3;
unsigned dest : 3;
} codage;
} mot; |
- La structure codage qui contient 4 champs de bits.
- Cette structure est contenue dans une union mot, en concurrence avec un short
Selon le principe de l'union, j'utilise le type mot soit comme un struct codage, soit comme un short.
Jusqu'ici tout va bien.
Mon problème est le suivant : comment savoir quelle "partie" de l'union est utilisée ?
Exemple :
Code:
1 2
| mot unMot;
unMot.brut = 32; |
Je voudrais savoir si unMot est un short, ou un struct codage.
J'ai essayé
Code:
1 2 3
| if ( unMot.codage == NULL ) {
printf("Le mot est un short");
} |
Bien évidemment cela ne fonctionne pas.
Pourriez-vous éclairer ma lanterne ?