Bolehkah saya Membaca/Menulis Struktur Serasi Merentas Platform/Penyusun dengan Selamat kepada Fail?
Struktur dalam C memberikan cabaran untuk merentas- keserasian platform kerana perbezaan potensi dalam padding antara penyusun. Perbezaan ini timbul daripada kekurangan penyeragaman dalam C pada tahap binari.
Seperti yang dijelaskan oleh Don Box dalam bukunya, "Essential COM," model masa jalan binari C tidak diseragamkan. Oleh itu, pengkompil yang berbeza boleh menggunakan penjajaran padding yang berbeza-beza untuk struct, walaupun apabila menggunakan pengkompil yang sama dengan arahan pek pragma yang berbeza.
Selain itu, susunan pengisytiharan ahli dalam struct boleh menjejaskan saiznya, walaupun ahli kekal serupa. Contohnya:
struct A { char c; char d; int i; }; struct B { char c; int i; char d; };
Disusun dengan gcc-4.3.4, saiz A dan B berbeza walaupun ahlinya sama:
Size of A: 8 Size of B: 12
Perbezaan ini menjadikannya mustahil untuk mengandaikan bahawa semua penyusun akan pad struct dengan cara yang sama. Oleh itu, tiada kaedah terjamin untuk membaca/menulis struct dengan selamat pada fail dalam cara yang serasi merentas platform/pengkompil.
Atas ialah kandungan terperinci Bolehkah saya Menyimpan dan Mengambil Struktur C Dengan Selamat Merentasi Platform dan Penyusun Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!