Anonyme Varianten (C und C++)
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;
}