Witam Szanownych kolegów.
Zwracam się z takim pytaniem, załóżmy że mam:
/* keyboard buttons structure */
typedef struct kind_of_press
{
uint32_t hit : 1;
uint32_t bounce : 1;
uint32_t shortpress : 1;
uint32_t longpress : 1;
uint32_t repeatpress : 1;
};
typedef struct buttons
{
kind_of_press button_zero;
kind_of_press button_one;
kind_of_press button_two;
kind_of_press button_three;
kind_of_press button_four;
kind_of_press button_five;
kind_of_press button_six;
kind_of_press button_seven;
kind_of_press button_eight;
kind_of_press button_nine;
kind_of_press button_arrow_left;
kind_of_press button_arrow_right;
kind_of_press button_arrow_up;
kind_of_press button_arrow_down;
kind_of_press button_arrow_enter;
kind_of_press button_esc;
} keyboard_t;
volatile keyboard_t keyboard;
Jak widać na każdą podstrukturę "kind of press" jest przewidzianych pięć pól bitowych. Pytanie brzmi czy wobec tego na strukturę keyboard_t (czyli na naszą utworzoną instancję "keyboard") kompilator zarezerwuje pięć razy ilość klawiszy czyli 5 * 16 = 80 bitów czyli 10 bajtów ?
Jeśli nie to czy istnieje możliwość zmuszenia go do tego stosując atrybut "packed".
Szczerze mówiąc tylko słyszałem o nim i nie jestem pewien czy ma tutaj zastosowanie do takiej operacji...
Dodam jeszcze tylko że piszę na 32 bitowego AVR'a.
Korzystając z okazji życzę wszystkim Mokrego Dyngusa, spokojnych i radosnych Świąt.