Sto lavorando con le strutture in c su linux. ho iniziato ad usare campi di bit e la "imballato" attributo e mi sono imbattuto in un comportamento strano:Campi di bit compressi in strutture c - GCC
struct t1
{
int a:12;
int b:32;
int c:4;
}__attribute__((packed));
struct t2
{
int a:12;
int b;
int c:4;
}__attribute__((packed));
void main()
{
printf("%d\n",sizeof(t1)); //output - 6
printf("%d\n",sizeof(t2)); //output - 7
}
Come mai entrambe le strutture - che sono esattamente lo stesso - prendere il numero differente di byte?
Perché 't2 :: b' è garantito come una posizione di memoria distinta? Pensa alle gare di dati. –