Я видел такое объединение внутри определения структуры в чистом коде c в Linux исходниках ядра struct cma_multicast
(это не единственное место. Кажется, что это какое-то обычная практика):
struct cma_multicast {
struct rdma_id_private *id_priv;
union {
struct ib_sa_multicast *ib;
} multicast;
struct list_head list;
void *context;
struct sockaddr_storage addr;
struct kref mcref;
};
Но я не могу понять, какова цель объединения только с одним членом внутри структуры? Почему мы не можем просто набрать struct ib_sa_multicast *ib;
?
Я прочитал это сообщение , но оно не имеет объяснения использования и имеет только специфику C ++.
UPD: Прикреплен пример из ядра Linux вместо проприетарного кода.