Ich arbeite mit Strukturen in c auf Linux. Ich begann Bitfelder verwenden und die „verpackt“ -Attribut und stieß ich auf ein sonderbares Verhalten:Gepackte Bitfelder in c-Strukturen - 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
}
Wie beide Strukturen kommen -, die genau die gleichen sind - nehmen diffrent Anzahl von Bytes?
Weil 't2 :: b 'garantiert ein eindeutiger Speicherort ist? Denken Sie an Datenrennen. –