Quand faut-il recourir aux syndicats ? Pourquoi en avons-nous besoin ?
Réponses
Trop de publicités?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.
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".
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. */
};
- 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.