Namespace von Strukturen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Strukturen - Index

Tag-Namen von Strukturen, Varianten und Aufzählungstypen teilen sich denselben Namespace (nur Aufzählungstypen innerhalb von Strukturen haben in C++ einen anderen Namespace). Das bedeutet, dass derartige Tags innerhalb eines Gültigkeitsbereichs eindeutig sein müssen. Doch Tag-Namen müssen sich nicht von den Bezeichnern in den anderen drei Namespaces unterscheiden: Label-Namespace, Element-Namespace(s) und einmaliger Namespace (bestehend aus Variablen, Funktionen, typedef-Namen und Aufzählungstypen).

Elementnamen innerhalb einer Struktur oder Variante müssen eindeutig sein, können sich aber in anderen Strukturen oder Varianten wiederholen. Zum Beispiel:



 goto s;
     .
     .
     .
 s:           // Label
 struct s {   // OK: Tag- und Label-Namespaces sind verschieden
    int s;    // OK: Tag- und Label-Namespaces sind verschieden
    float s;  // UNGÜLTIG: doppelter Elementname
 } s;         // OK: var-Namespace verschieden. In C++ ist dies nur
              // möglich , wenn s keinen Konstruktor hat.
 union s {    // UNGÜLTIG: doppelter Tag-Bereich
    int s;    // OK: neuer Elementbereich
    float f;
 } f;         // OK: var-Namespace
 struct t {
    int s;    // OK: verschiedener Elementbereich
     .
     .
     .
 } s;         // UNGÜLTIG: doppelter var-Name