Anonyme Varianten (C und C++)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Varianten - Index

Eine Variante, die keinen Namen hat und nicht zur Deklaration eines benannten Objekts (oder anderen Typs) verwendet wird, heißt anonyme Variante. Sie besitzt folgende Syntax:

union { member_list };

Auf ihre Elemente kann in dem Gültigkeitsbereich, in dem die Variante deklariert ist, direkt – ohne die x.y oder p->y-Syntax – zugegriffen werden.

Anonyme Varianten können global, verschachtelt oder nicht verschachtelt sein. ANSI-C erlaubt grundsätzlich keine anonymen Varianten. ANSI-C++ erlaubt drei Typen von anonymen Varianten.

Anonyme Varianten in C++

Anonyme Varianten dürfen weder Elementfunktionen noch private- oder protected-Elemente enthalten. Auf Dateiebene müssen sie als statisch deklariert sein. Lokale anonyme Varianten müssen entweder automatic oder static sein. Mit anderen Worten: eine anonyme Variante darf keine externe Bindung haben. Nicht verschachtelte Varianten sind nur in C++ erlaubt.

Verschachtelte anonyme Varianten

Die äußere Struktur, Klasse oder Union einer verschachtelten anonymen Variante muss ein Tag besitzen. Borland C und C++ erlauben standardmäßig verschachtelte anonyme Varianten. In C kann eine verschachtelte anonyme Variante optional ein Tag besitzen.

Ein Beispiel:

struct outer {
  int x;
};

int main(void)
{
  struct outer o;
}