Gültigkeitsbereich

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Deklarationen - Index

Der Gültigkeitsbereich eines Bezeichners ist der Programmteil, in dem über den Bezeichner auf das Objekt zugegriffen werden kann. Es gibt mehrere Kategorien von Gültigkeitsbereichen: Block (oder lokal), Funktion, Funktionsprototyp, Datei, Klasse (nur in C++), Bedingung (nur in C++) und Namespaces (nur in C++). In welche Kategorie der Gültigkeitsbereich fällt, hängt davon ab, wie und wo Bezeichner deklariert werden.

  • Block. Der Block- oder lokale Gültigkeitsbereich beginnt beim Deklarationspunkt und hört am Ende des Blockes auf, der die Deklaration enthält (ein derartiger Block wird einschließender Block genannt). Hierzu gehören auch Parameterdeklarationen innerhalb einer Funktionsdefinition.
  • Funktion. Labels für Anweisungen sind die einzigen Bezeichner, die eine Funktion als Gültigkeitsbereich haben. Labelnamen können mit goto-Anweisungen an beliebiger Stelle in der Funktion, in der das Label deklariert wird, verwendet werden. Labels werden implizit durch das Schreiben von label_name deklariert: gefolgt von einer Anweisung. Derselbe Labelname darf in einer Funktion nur einmal vorkommen.
  • Funktionsprototyp. Bezeichner, die in der Liste der Parameterdeklarationen eines Funktionsprototyps (die nicht Teil einer Funktionsdefinition ist) deklariert werden, haben als Gültigkeitsbereich den Funktionsprototyp. Dieser Gültigkeitsbereich endet mit dem Ende des Funktionsprototyps.
  • Datei. Bezeichner mit dem Gültigkeitsbereich Datei, sogenannte globale Bezeichner, werden außerhalb aller Klassen und Blöcke deklariert. Ihr Gültigkeitsbereich erstreckt sich vom Deklarationspunkt bis zum Ende der Quelldatei.
  • Klasse (C++). Vereinfacht gesagt ist eine Klasse eine benannte Ansammlung von Elementen, einschließlich der Datenstrukturen und Funktionen, die auf diese zugreifen. Der Gültigkeitsbereich Klasse wird auf die Namen von Elementen einer bestimmten Klasse angewendet. Für Klassen und ihre Objekte gelten viele spezielle Zugriffs- und Gültigkeitsbereichsregeln (siehe auch Klassen).
  • Bedingung (C++). Deklarationen mit Bedingungen werden unterstützt. Variablen können innerhalb eines Ausdrucks mit if-, while- oder switch-Anweisungen deklariert werden. Der Gültigkeitsbereich der Variable ist mit dem der Anweisung identisch. Handelt es sich um eine if-Anweisung, befindet sich die Variable ebenfalls im Gültigkeitsbereich des else-Blocks.
  • Namespace (C++). Ein Namespace ist eine logische Gruppierung von Programmeinheiten (z.B. Bezeichner, Klassen und Funktionen). Namespaces sind offen, d.h. sie können sich über mehrere compilierte Einheiten erstrecken. Sie können sich einen Namespace als die Einführung eines benannten Gültigkeitsbereichs vorstellen, in vielem den Klassen aus C++ ähnlich. Siehe das Hilfethema Namespace für weitere Informationen zur Deklaration und Verwendung von Namespaces.

Namespaces

Ein Namespace ist der Bereich, in dem derselbe Bezeichner nur einmal vorkommen darf. Beachten Sie, dass für einen Namespace in C++ ein erweitertes Konzept gilt, da Sie dem Gültigkeitsbereich einen Namen geben können. Zusätzlich zu der Möglichkeit, in C++ benannte Namespaces zu erstellen, verwendet die Programmiersprache C vier verschiedene Klassen von Bezeichnern:

  • goto-Labelnamen. Diese Bezeichner müssen innerhalb der Funktion, in der sie deklariert werden, eindeutig sein.
  • Struktur-, Varianten- und Aufzählungs-"Tags". Diese Bezeichner müssen innerhalb des Blockes, in dem sie definiert werden, eindeutig sein. "Tags", die außerhalb einer Funktion deklariert werden, müssen eindeutig sein.
  • Namen von Struktur- und Variantenelementen. Diese Bezeichner müssen innerhalb der Struktur oder Variante, in der sie definiert werden, eindeutig sein. Für Elemente mit gleichem Namen in verschiedenen Strukturen gibt es keine Restriktionen bezüglich Typ und Offset.
  • Variablen, typedefs, Funktionen und Elemente von Aufzählungen. Diese Bezeichner müssen innerhalb des Gültigkeitsbereichs, in dem sie definiert werden, eindeutig sein. Extern deklarierte Bezeichner müssen unter den extern deklarierten Variablen eindeutig sein.

Siehe auch