Зачем называть объединение, если компилятор всегда рассматривает объект как анонимный, независимо от того, называется ли объединение?В чем причина именования профсоюзов?
Моя реализация выглядит следующим образом:
typedef struct _DMessageHeader {
union _msgId {
unsigned char ucMsgId;
unsigned short usMsgId;
unsigned long ulMsgId;
unsigned long long ullMsgId;
} msgId;
} DMSG_HDR, *PDMSG_HDR;
Я хотел бы иметь возможность доступа к нему, как это, но компилятор выдает ошибку:
PDMSG_DESC ptMsg->hdr.msgId = id_in;
Это позволяет только мне напрямую обращайтесь к члену профсоюза следующим образом:
PDMSG_DESC ptMsg->hdr.msgId.ucMsgId = id_in;
Любые мысли о том, почему это так, или как я могу ss союз по имени?
Каков тип 'id_in'? Почему вы ожидаете, что сможете присвоить вещь одного типа другому типу? –
Эти typedefs никогда не были нужны в C++, даже на C++ 98 и все еще не в C++ 14. '_D' просто неправильно. – MSalters