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; }; };
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;
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!