302 votes

Pourquoi avons-nous besoin de syndicats C ?

Quand faut-il recourir aux syndicats ? Pourquoi en avons-nous besoin ?

4voto

Paul Betts Points 41354

Les unions sont utilisées lorsque vous souhaitez modéliser des structures définies par du matériel, des périphériques ou des protocoles réseau, ou lorsque vous créez un grand nombre d'objets et que vous souhaitez gagner de la place. Vous n'en avez pas vraiment besoin dans la plupart des cas. Restez-en à un code facile à déboguer.

3voto

Zoneur Points 671

A l'école, j'utilisais des syndicats comme celui-ci :

typedef union
{
  unsigned char color[4];
  int       new_color;
}       u_color;

Je l'ai utilisé pour gérer les couleurs plus facilement, au lieu d'utiliser les opérateurs >> et <<, j'avais juste à passer par les différents index de mon tableau de chars.

1voto

sharptooth Points 93379

Qu'en est-il VARIANT qui est utilisé dans les interfaces COM ? Il comporte deux champs - "type" et une union contenant une valeur réelle qui est traitée en fonction du champ "type".

1voto

Mu Qiao Points 3199

J'ai utilisé l'union lorsque je codais pour des dispositifs embarqués. J'ai un int en C qui a une longueur de 16 bits. Et j'ai besoin de récupérer les 8 bits supérieurs et les 8 bits inférieurs lorsque je dois lire/stocker dans une EEPROM. J'ai donc utilisé cette méthode :

union data {
    int data;
    struct {
        unsigned char higher;
        unsigned char lower;
    } parts;
};

Il ne nécessite pas de décalage, ce qui rend le code plus facile à lire.

D'un autre côté, j'ai vu un vieux code C++ stl qui utilisait union comme allocateur stl. Si vous êtes intéressé, vous pouvez lire le sgi stl code source. En voici un extrait :

union _Obj {
    union _Obj* _M_free_list_link;
    char _M_client_data[1];    /* The client sees this.        */
};

1voto

James Anderson Points 18253
  • Un fichier contenant différents types d'enregistrements.
  • Une interface réseau contenant différents types de demandes.

Jetez un coup d'oeil à ça : Traitement des commandes de tampon X.25

Une des nombreuses commandes X.25 possibles est reçue dans un tampon et traitée sur place en utilisant une UNION de toutes les structures possibles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X