22Янв/130
Для чего нужен union
Продолжаю открывать для себя С++...
Объединение служит для, как бы это ни казалось странным, объединения.
Это позволяет, записывая данные в одно поле union
'а, одновременно получать эти же данные в другом поле. Причем поля могут быть разные по содержимому.
Пример:
typedef struct { unsigned short fbNVRIncorrectCRC :1; unsigned short fbConfigIncorrectCRC :1; unsigned short fbSPIInterfaceError :1; unsigned short fbMFIncorrectCRC :1; unsigned short fbMFWriteError :1; unsigned short fbMFNotInstalled :1; unsigned short fbEEJFatalError :1; unsigned short fbUnused1 :1; unsigned short fbNotInitialized :1; unsigned short fbNonFiscalMode :1; unsigned short fbShiftOpened :1; unsigned short fb24HourOverflow :1; unsigned short fbEEJArchieveClosed :1; unsigned short fbEEJNotActivated :1; unsigned short fbMFNoMemoryForShift :1; unsigned short fbMFWrongPassword :1; unsigned char dbDocumentType; } ST_FRSTATUS; typedef union { ST_FRSTATUS stStatus; unsigned char dbStatus[3]; } UN_FRSTATUS;
И теперь можно записать данные в массив unsigned char dbStatus[3];
и потом получить их из структуры уже разобранными.
Т.е. можно обратиться к dbStatus[2] и к stStatus.dbDocumentType и получить один и тот же результат.
Единственное - нельзя обращаться по разным именам в одном блоке программы..
Комментарии (0)
Пинги (0)
(подписаться на новые комментарии в этой ветке)
Нет обратных ссылок на эту запись.
Leave a comment