Explain, please, how is the structure created here? What does the colon do:?
/** * @brief Bit-field structure of the state of the packet reception */ typedef struct{ uint32_t Length :16; /*!< The number of bytes in the packet including header and CRC. */ uint32_t PF_ERR :1; /*!< A sign package PAUSE. */ uint32_t CF_ERR :1; /*!< A sign Management Pack (filtering by MAC and special tags in the field length - 13.14 - octets). */ uint32_t LF_ERR :1; /*!< A sign excess packet length 1518 octets. */ uint32_t SF_ERR :1; /*!< A sign of lack of packet length 64 octets. */ uint32_t LEN_ERR :1; /*!< A sign mismatch between the actual length and the length specified in the length field - 13.14 octets. */ uint32_t DN_ERR :1; /*!< A sign bit of the packet is not a multiple of 8. */ uint32_t CRC_ERR :1; /*!< A sign mismatch packet CRC. */ uint32_t SMB_ERR :1; /*!< A sign of the presence in the packet error nibbles. */ uint32_t MCA :1; /*!< A sign group package (MAC matches HASH). */ uint32_t BCA :1; /*!< A sign of the broadcast packet (MAC = FF:FF:FF:FF:FF:FF). */ uint32_t UCA :1; /*!< A sign individual package (MAC corresponds to the set). */ }ETH_StatusPacketReceptionBitFileds;