Isu keserasian merentas platform timbul apabila cuba membaca atau menulis struct C pada fail yang boleh diakses oleh platform atau penyusun yang berbeza.
Dalam C , padding struct berbeza antara penyusun dan platform kerana kekurangan penyeragaman pada peringkat binari. Ini bermakna susun atur memori sesuatu struct boleh berbeza-beza bergantung pada persekitaran sasaran.
Malangnya, percanggahan ini menjadikannya mustahil untuk membaca/menulis struct dengan selamat merentas platform dan pengkompil. Don Box menyerlahkan kelemahan asas ini dalam C , menekankan ketiadaan model masa jalan binari piawai.
Penyusun menggunakan peraturan padding yang berbeza, walaupun dalam pengkompil yang sama, berdasarkan pek pragma yang digunakan. Selain itu, hanya menyusun semula pengisytiharan ahli dalam struct boleh mengubah saiznya.
Sebagai contoh, pertimbangkan contoh berikut:
struct A { char c; char d; int i; }; struct B { char c; int i; char d; };
Apabila disusun dengan gcc-4.3.4, output menunjukkan saiz yang berbeza untuk A dan B:
8 12
Variasi dalam saiz struct ini menggariskan kekurangan konsistensi dalam padding merentas pengkompil.
Akibatnya, adalah tidak mungkin untuk menjamin bahawa struct yang ditulis daripada satu platform dan pengkompil akan ditafsirkan dengan betul oleh platform dan pengkompil lain disebabkan oleh peraturan padding yang berbeza-beza.
Atas ialah kandungan terperinci Bagaimanakah C Structs Boleh Mencapai Keserasian I/O Fail Merentas Platform?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!