ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1080314 Топик полностью
yни (25.02.2021 10:02, просмотров: 205) ответил yни на Однобайтовое выравнивание возможно, но работать с ними опасно. К примеру, в modbus rtu заголовках используется однобайтовые поля, причём, размер некоторых заголовков нечётный. Не каждый может сказать как получить нечётный указатель на поле такого заголовка, поэтому обычно народ побайтно разбирает, как с массивом. У меня iar тоже никак не хотел отдать в runtime нечётный указатель, пока я ему специальное ключевое слово не вставил в тип указателя (__packed). Вот так создатели
Дополнять ещё можно так, опуская идентификатор поля. 
// Тип, описывающий глобальные флаги программы
typedef struct _SFLAGS {
    
    uint8_t KeyModePressed:  1; // Состояние клавиши MODE
    uint8_t KeyColorPressed: 1; // Состояние клавиши COLOR
    uint8_t GotoSleep:       1; // Команда "Заснуть" для основного потока (main)
    uint8_t RxComplete:      1; // Принята посылка в USART0
    uint8_t:                 4; // дополнение до 8 бит (резерв) 
    
} SFLAGS;