Saya membaca bahwa urutan bidang bit dalam sebuah struct adalah khusus platform. Bagaimana jika saya menggunakan opsi pengemasan khusus kompiler yang berbeda, apakah data jaminan ini akan disimpan dalam urutan yang benar seperti yang tertulis? Sebagai contoh:
struct Message
{
unsigned int version : 3;
unsigned int type : 1;
unsigned int id : 5;
unsigned int data : 6;
} __attribute__ ((__packed__));
Pada prosesor Intel dengan kompiler GCC, bidang diletakkan di memori seperti yang ditunjukkan. Message.version
adalah 3 bit pertama dalam buffer, dan Message.type
diikuti. Jika saya menemukan opsi pengemasan struct yang setara untuk berbagai kompiler, apakah ini akan menjadi lintas platform?