Rumah >pembangunan bahagian belakang >C++ >Adakah Anonymous Structs Standard dalam C ?
Adakah "Struktur Tanpa Nama" Standard dalam C ?
MSDN mendakwa bahawa struct tanpa nama adalah bukan standard dalam C , tetapi pemeriksaan yang lebih dekat mendedahkan senario yang berbeza. Walaupun piawaian C mentakrifkan "struktur tanpa nama," ia tidak menangani secara khusus konsep "struktur tanpa nama."
Mentakrifkan Struktur Tanpa Nama
Piawaian C membenarkan untuk pengisytiharan struct tanpa nama, juga dikenali sebagai struct tanpa nama. Struktur ini tidak mempunyai nama dan biasanya digunakan sebagai jenis bersarang dalam struktur lain. Coretan kod berikut menunjukkan struct tanpa nama:
struct Foo { struct { int hi; int bye; }; };
Kod ini mentakrifkan struct tanpa nama dalam struktur Foo. Struct yang tidak dinamakan terdiri daripada dua ahli: hi dan bye.
Mengakses Ahli Struktur Tanpa Nama
Standard C membenarkan akses ahli struct tidak bernama menggunakan operator titik . Sebagai contoh, dalam contoh sebelumnya, ahli hi boleh diakses seperti berikut:
Foo f; f.hi = 3;
Struktur Tanpa Nama berbanding "Struktur Tanpa Nama sebagai Ahli"
Sementara C 03 dan C 11 tidak menyebut secara eksplisit "struktur tanpa nama," fenomena mengakses ahli yang tidak dinamakan struct seolah-olah mereka adalah ahli struktur induk tidak ditangani secara khusus. Tingkah laku ini, yang dikenali sebagai "struktur tanpa nama sebagai ahli," tidak dilindungi oleh piawaian untuk struct yang tidak dinamakan.
Kekeliruan MSDN
MSDN nampaknya tersalah menggabungkan struct yang tidak dinamakan dengan struct tanpa nama sebagai ahli. Walaupun struct yang tidak dinamakan adalah standard, struct tanpa nama sebagai ahli ialah ciri bukan standard yang disokong oleh pengkompil tertentu seperti GCC dan Visual C .
Kesimpulan
Ringkasnya, sementara struct tanpa nama kerana ahli bukan standard dalam C , struct tanpa nama disokong sepenuhnya oleh standard. Istilah "struktur tanpa nama" dan "struktur tanpa nama" merujuk kepada konsep yang berbeza, dengan yang kedua merujuk kepada gelagat bukan standard untuk mengakses ahli struktur yang tidak dinamakan seolah-olah mereka adalah ahli struktur induk.
Atas ialah kandungan terperinci Adakah Anonymous Structs Standard dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!