Объясните, пожалуйста, как тут создается структура? Что делает знак двоеточие :? /** * @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
Ответ После двоеточия для члена структуры задается размер этого члена в битах. Т.е. такой член является битовым полем. В основном это используется для упаковки данных и при этом сохранения удобного доступа на изменение и чтения значения. При этом для битового поля запрещена операция взятия адреса. Собственно в комментарии к структуре уже содержится ответ: Bit-field structure ...