Pola bitowe określają nieoczekiwane zachowanie przypisania
Nie wiem dlaczego, ale przypisanie pól bitowych nie działa zgodnie z oczekiwaniami. Prawdopodobnie to tylko głupia rzecz, ale nie udało mi się zlokalizować problemu.
Każda pomoc jest więcej niż mile widziana.
<code>typedef struct a { unsigned char a1 :1; unsigned char a2 :3; unsigned char a3 :2; unsigned char a4 :2; } __attribute__((packed)) mystruct; int main() { mystruct d; d.a1 = 0; d.a2 = 2; d.a3 = 1; d.a4 = 2; unsigned char *val = (unsigned char*) &d; printf("%02X \n", *val); printf("%02X \n", sizeof(hola)); exit(0); } </code>
zwrócone dane wyjściowe:
<code>94 01 </code>
oczekiwany wynik:
<code>26 01 </code>