tôi đang làm việc với cấu trúc trong c trên Linux. tôi bắt đầu sử dụng các lĩnh vực bit và "đóng gói" thuộc tính và tôi đi qua một hành vi lạ:lĩnh vực chút đóng gói trong các cấu trúc 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
}
Tại sao cả hai cấu trúc - đó là giống hệt nhau - mất số khác nhau của byte?
Bởi vì 't2 :: b' là đảm bảo được một vị trí bộ nhớ riêng biệt? Hãy suy nghĩ về các cuộc đua dữ liệu. –