Rumah >pembangunan bahagian belakang >C++ >Adakah Struktur Tanpa Nama dalam C Mematuhi Piawaian?
Struktur Tanpa Nama: Standard atau Tidak?
Menurut MSDN, struct tanpa nama adalah bukan standard dalam C . Walau bagaimanapun, kenyataan ini menimbulkan persoalan sama ada perbezaan ini adalah tepat.
Struktur Tanpa Nama Piawai
Piawaian C (kedua-dua C 03 dan C 11) membenarkan penciptaan struct tanpa nama seperti berikut:
struct { int hi; int bye; };
Streng tanpa nama ini boleh dijadikan sebagai ahli struct lain:
struct Foo { struct { int hi; int bye; } bar; };
Struktur Tanpa Nama dalam Visual C dan GCC
Apa yang sering dirujuk sebagai "struktur tanpa nama" dalam Visual C dan GCC adalah sedikit berbeza. Arahan ini juga membenarkan mengakses ahli secara terus melalui objek induk:
struct Foo { struct { // No member name int hi; int bye; }; }; int main() { Foo f; f.hi = 3; // Access member without using nested struct }
Struktur Tanpa Nama Bukan Standard
Fungsi mengakses ahli secara terus melalui objek induk ini bukan standard. Ia adalah sambungan Microsoft yang disokong dalam Visual C dan juga oleh GCC. Pengepala API Windows menggunakan ciri "struktur tanpa nama" ini. Walau bagaimanapun, ia boleh dilumpuhkan dengan mentakrifkan NONAMELESSUNION sebelum memasukkan fail pengepala Windows.
Perbezaan daripada Kesatuan Tanpa Nama
Kesatuan tanpa nama standard juga menyediakan akses kepada ahli secara terus melalui objek induk . Contohnya:
struct Foo { union { // No member name int hi; int bye; }; }; int main() { Foo f; f.hi = 3; // Access member without using nested union }
Kesimpulan
Istilah "struktur tanpa nama" dalam standard merujuk kepada jenis keseluruhan, manakala istilah "struktur tanpa nama" digunakan dalam Visual C dan GCC merujuk kepada keupayaan untuk mengakses ahli secara langsung melalui objek induk. Fungsi terakhir ini bukan standard, walaupun ia kekal disokong secara meluas oleh penyusun popular.
Atas ialah kandungan terperinci Adakah Struktur Tanpa Nama dalam C Mematuhi Piawaian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!