Accéder aux membres du syndicat en utilisant le nom du syndicat

Comment puis-je accéder aux membres du syndicat qui existent à l’intérieur de la structure?

Considérons l’extrait de code:

struct Emp { char name[20]; union address { char addr[50]; }; }; struct Emp e; 

Avec e , comment puis-je accéder au type addr sans créer d’object d’union?

Les champs struct / union non identifiés dans structs / unions sont pris en charge dans C11 ainsi que dans l’extension GCC. Si cette fonctionnalité est e.addr , vous pouvez utiliser directement e.addr . Notez que le nom de la balise doit être vide non plus.

 struct Emp { char name[20]; union { char addr[50]; }; }; 

Si ce n’est pas pris en charge, vous devez donner un nom au union et utiliser euaddr .

 struct Emp { char name[20]; union address { char addr[50]; } u; }; 

Donnez un nom au membre du syndicat:

 struct Emp { char name[20]; union { char addr[50]; } address; }; 

Maintenant, vous pouvez y accéder comme suit:

 struct Emp e; e.address.addr; 

L’union devrait être nommée en premier

 [struct_object_name].[union_name].[union_datamember] 

Ici,

 struct Emp { char name[20]; union { char addr[50]; } Emp_address; }; struct Emp e; 

adresse comme

 e.Emp_address.addr