ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
-
- Замена на uint16_t в старой версии уменьшает размер до 2 байт.
Замена на uint32_t в новой версии не увеличивает размер до 4 байт. Добавление поля с суммарным количеством бит 21
делает 3 байта. Хреново, это данные конфигурации, при обновлении ПО
она будет слетать, нужно специально отслеживать. - VLLV(25.08.2022 11:44)
- Я редко такое использую, но уж если использую, то стараюсь до
желаемого размера добить uint32_t rezerved:17 или сколько надо. А
тут еще и #pragma pack(push,1) - вот и пакует до байта. - Andreas(25.08.2022 12:06)
- +100500 Компилятору нужно говорить всё конкретно, если хочешь зарезервировать 32 бита для параметров, так и зарезервируй их ЯВНО, а не занимайся изучением багофич отдельных версий оптимизатора. - =AlexD=(25.08.2022 14:43)
- Я в свое время отказался от упаковки, но тут "просочилось". К сожалению, формат хранения некоторых данных должен совпадать с форматом в протоколе. - VLLV(25.08.2022 12:11)
- какие свойства компилятора стоят на файлах в 8ке и 9ке? В 8ке
скорее всего Standart C или Strict C (мб С89?). В 9ке Standart C
with IAR extensions или C++ - Oman(25.08.2022 12:00)
- Одинаковые, Standart C with IAR extensions - VLLV(25.08.2022 12:05)
- Такие вещи можно отслеживать через assert(). А если повезёт, можно сконструировать подходящий static_assert(). - SciFi(25.08.2022 11:46)
- Я редко такое использую, но уж если использую, то стараюсь до
желаемого размера добить uint32_t rezerved:17 или сколько надо. А
тут еще и #pragma pack(push,1) - вот и пакует до байта. - Andreas(25.08.2022 12:06)
- Замена на uint16_t в старой версии уменьшает размер до 2 байт.
Замена на uint32_t в новой версии не увеличивает размер до 4 байт. Добавление поля с суммарным количеством бит 21
делает 3 байта. Хреново, это данные конфигурации, при обновлении ПО
она будет слетать, нужно специально отслеживать. - VLLV(25.08.2022 11:44)