Heim > Backend-Entwicklung > C++ > Sind anonyme Strukturen in C Standard?

Sind anonyme Strukturen in C Standard?

Susan Sarandon
Freigeben: 2024-12-03 08:02:10
Original
124 Leute haben es durchsucht

Are Anonymous Structs Standard in C  ?

Sind „Anonyme Strukturen“ Standard in C?

MSDN behauptet, dass anonyme Strukturen in C nicht Standard sind, aber eine genauere Untersuchung zeigt ein anderes Szenario. Während der C-Standard „unbenannte Strukturen“ definiert, befasst er sich nicht speziell mit dem Konzept der „anonymen Strukturen“.

Definieren unbenannter Strukturen

Der C-Standard ermöglicht dies Deklaration unbenannter Strukturen, auch anonyme Strukturen genannt. Diese Strukturen haben keinen Namen und werden typischerweise als verschachtelte Typen innerhalb anderer Strukturen verwendet. Der folgende Codeausschnitt demonstriert eine unbenannte Struktur:

struct Foo {
    struct {
        int hi;
        int bye;
    };
};
Nach dem Login kopieren

Dieser Code definiert eine unbenannte Struktur innerhalb der Foo-Struktur. Die unbenannte Struktur besteht aus zwei Mitgliedern: Hi und Bye.

Zugriff auf Mitglieder anonymer Strukturen

Standard C ermöglicht den Zugriff auf Mitglieder unbenannter Strukturen mithilfe des Punktoperators . Im vorherigen Beispiel kann beispielsweise wie folgt auf das hi-Mitglied zugegriffen werden:

Foo f;
f.hi = 3;
Nach dem Login kopieren

Anonyme Strukturen im Vergleich zu „Unbenannten Strukturen als Mitglieder“

Während C 03 und C 11 erwähnen „anonyme Strukturen“ nicht ausdrücklich, das Phänomen des Zugriffs auf Mitglieder unbenannter Strukturen, als wären sie Mitglieder der Auf die übergeordnete Struktur wird nicht speziell eingegangen. Dieses Verhalten, bekannt als „anonyme Strukturen als Mitglieder“, wird nicht durch den Standard für unbenannte Strukturen abgedeckt.

Verwechslung von MSDN

MSDN scheint unbenannte Strukturen fälschlicherweise mit zu verwechseln anonyme Strukturen als Mitglieder. Während unbenannte Strukturen Standard sind, stellen anonyme Strukturen als Mitglieder eine nicht standardmäßige Funktion dar, die von bestimmten Compilern wie GCC und Visual C unterstützt wird.

Fazit

Zusammenfassend: while Anonyme Strukturen als Mitglieder sind in C kein Standard, unbenannte Strukturen werden vom Standard vollständig unterstützt. Die Begriffe „unbenannte Struktur“ und „anonyme Struktur“ beziehen sich auf unterschiedliche Konzepte, wobei sich letzteres auf das nicht standardmäßige Verhalten beim Zugriff auf Mitglieder einer unbenannten Struktur bezieht, als wären sie Mitglieder der übergeordneten Struktur.

Das obige ist der detaillierte Inhalt vonSind anonyme Strukturen in C Standard?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage