Bonjour à tous,

Pour représenter un type de données, j'ai l'union suivante :

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
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 C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
mot unMot;
unMot.brut = 32;

Je voudrais savoir si unMot est un short, ou un struct codage.

J'ai essayé
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if ( unMot.codage == NULL ) {
  printf("Le mot est un short");
}
Bien évidemment cela ne fonctionne pas.

Pourriez-vous éclairer ma lanterne ?