Rumah >pembangunan bahagian belakang >C++ >Adakah Anonymous Structs Standard dalam C ?

Adakah Anonymous Structs Standard dalam C ?

Susan Sarandon
Susan Sarandonasal
2024-12-03 08:02:10170semak imbas

Are Anonymous Structs Standard in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn