Tôi đọc rằng thứ tự của các trường bit trong một cấu trúc là nền tảng cụ thể. Còn nếu tôi sử dụng các tùy chọn đóng gói dành riêng cho trình biên dịch khác nhau, liệu dữ liệu đảm bảo này có được lưu trữ theo thứ tự thích hợp khi chúng được viết không? Ví dụ:
struct Message
{
unsigned int version : 3;
unsigned int type : 1;
unsigned int id : 5;
unsigned int data : 6;
} __attribute__ ((__packed__));
Trên bộ xử lý Intel với trình biên dịch GCC, các trường được sắp xếp trong bộ nhớ như chúng được hiển thị. Message.version
là 3 bit đầu tiên trong bộ đệm và Message.type
tiếp theo. Nếu tôi tìm thấy các tùy chọn đóng gói cấu trúc tương đương cho các trình biên dịch khác nhau, thì đây có phải là nền tảng chéo không?