ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
25 марта
1503946 Топик полностью
Nikolay_Po (06.03.2025 16:52, просмотров: 86) ответил Eddy_Em на Чаще всего я просто делаю явное преобразование в (uint8_t) и работаю как с массивом данных.
Спасибо, но нет. Не мой подход абсолютно! Во-первых, мне нужна свобода добавления/отъёма полей из структур, составляющих кадр на этапе компиляции. Проект развивается, и добавить байт/отнять байт должно быть гладко, без ручного пересчёта размера члена. 

Доходит до того, что в тех местах, где сделано как в вашем примере (так тоже иногда делаю, по ситуации), приходится обкладываться (обычно, в ините) static_assert (sizeof(Status_t)==sizeof(uint16_t),"Проверь размер cтатуса");

А вот когда сделано корректными типами - оно получается автоматически. Главное, чтобы итоговая длина кадра в канал влезла.

Во-вторых, я за строгий контроль типов и стараюсь минимизировать приведения типов. Практически, у меня приведения типов лишь в пересылке данных. Остальное - по своим типам работает как объявлено.