да. допустим приходит пакет данных откуда-нибудь. формат допустим. команда 1 байт, длина данных 2 байта, и сами данные любой длины. и условно говоря он хранится в массиве buf[] = {0x01, 0x0002, 0xAA, 0xBB}; тогда мы берём структуру вида typedef struct { uint8_t command; uint16_t datalen; uint8_t data[]} pack_struct; после чего натягиваем её на буфер в памяти: pack_struct *pack_ptr = (pack_struct *) buf; и имеем доступ к пакету в человеческом виде: pack_ptr->command == 0x01 pack_ptr->datalen == 2 pack_ptr->data == {0xAA, 0xBB}
Почему бы то же самое не сделать через union?
Такое через union делается чтобы не плодить зашифрованный код
Этот код - UB, если что. Union не помогают
конкретно в том что нужно выравнивание добавить
ну да. я ниже про это писал
Обсуждают сегодня