ฉันอ่านว่าลำดับของเขตข้อมูลบิตภายในโครงสร้างเป็นแพลตฟอร์มเฉพาะ แล้วถ้าฉันใช้ตัวเลือกการบรรจุเฉพาะของคอมไพเลอร์ที่แตกต่างกันข้อมูลการรับประกันนี้จะถูกจัดเก็บตามลำดับที่ถูกต้องตามที่เขียนหรือไม่ ตัวอย่างเช่น:
struct Message
{
unsigned int version : 3;
unsigned int type : 1;
unsigned int id : 5;
unsigned int data : 6;
} __attribute__ ((__packed__));
บนโปรเซสเซอร์ Intel ที่มีคอมไพเลอร์ GCC ฟิลด์ต่างๆจะถูกจัดวางไว้ในหน่วยความจำตามที่แสดง Message.version
เป็น 3 บิตแรกในบัฟเฟอร์และMessage.type
ตามด้วย หากฉันพบตัวเลือกการบรรจุโครงสร้างที่เทียบเท่ากันสำหรับคอมไพเลอร์ต่างๆสิ่งนี้จะเป็นข้ามแพลตฟอร์มหรือไม่