Freigeben über


Namespaces

Der Compiler installierte „Namespace“, um zwischen den Bezeichnern unterscheiden, die für verschiedene Arten von Elementen verwendet wurden.Die Namen innerhalb eines Namespace müssen eindeutig sein, Konflikte zu vermeiden, aber ein identischer Namen kann in mehr als einem Namespace befinden.Dies bedeutet, dass Sie den gleichen Bezeichner für zwei oder verschiedenere Elemente können, vorausgesetzt, dass die Elemente in unterschiedlichen Namespaces sind.Der Compiler kann Verweise auf Grundlage der syntaktischen Kontext des Bezeichners im Programm zu beheben.

HinweisHinweis

Verwechseln Sie den gebundenen C-Begriff eines Namespaces nicht mit der C++- „Namespace“ - Funktion.Weitere Informationen finden Sie unter Namespaces in der C++-Sprachreferenz.

Diese Liste beschreibt die Namespaces, die in C verwendet werden.

  • Anweisungsmarken
    Benannte Anweisungsmarken sind Teil von Anweisungen.Definitionen von Anweisungsmarken werden immer gefolgt von einem Doppelpunkt, sind aber nicht Teil Fall Bezeichnungen.Wird von den Anweisungsmarken immer sofort nach dem Schlüsselwort goto.Anweisungsmarken müssen nicht von anderen Namen oder den Bezeichnungsnamen in anderen Funktionen unterscheiden.

  • Tage Enumeration, Struktur, Union
    Diese Tags sind Teil der Struktur, Union, und Enumerationstyp Formatbezeichner und, sofern vorhanden, immer sofort den reservierten Wörtern struct, Unionoder enumfolgen.Die Tagnamen müssen von allen anderen Struktur, Union oder Enumeration von tagen mit derselben Sichtbarkeit unterscheiden.

  • Member von Strukturen oder Unions
    Membernamen werden in Namespaces zugeordnet, die jeder Struktur und Union-Typ zugeordnet sind.Auf diese Weise kann der gleiche Bezeichner ein Komponentenname in einer beliebigen Anzahl von Strukturen oder Unions gleichzeitig sein.Definitionen von Komponentennamen fungieren immer innerhalb der Struktur- oder Union-Typ-Spezifizierer auf.Wird von den Komponentennamen folgen immer sofort den Member Auswahl Operatoren (– > und .).Der Name eines Members muss innerhalb der Struktur oder Union muss jedoch eindeutig sein, nicht von anderen Namen im Programm, z. B. die Namen der Member von unterschiedlichen Strukturen und Unions oder dem Namen der Struktur selbst unterscheiden.

  • Normale Bezeichner
    Alle anderen Namen werden in den Namespaces, der Variablen, Funktionen (einschließlich der formalen Parameter und lokale Variablen) enthält, und Enumerationskonstanten.Bezeichnernamen aufweisen Sichtbarkeit geschachtelt, das heißt Sie können sie innerhalb der Blöcke neu definieren.

  • Typedef-Namen
    Typedef-Namen können nicht verwendet werden, während Bezeichner in demselben Gültigkeitsbereich.

Zum Beispiel seit Struktur tagen Variablennamen und Strukturmember verursachen, sind in drei verschiedenen Namespaces, die drei Elemente, die student in diesem Beispiel nicht benannt werden.Der Kontext des jeweiligen Elements ermöglicht richtige Auslegung jedes Vorkommens von student im Programm.(Weitere Informationen über Strukturen finden Sie unter Struktur-Deklarationen).

struct student {
   char student[20];
   int class;
   int id;
   } student;

Wenn student nach dem struct-Schlüsselwort wird, erkennt der Compiler als Struktur tag.Wenn student nach einem Member Auswahl Operator (– > oder .) angezeigt wird, wird der Name der Strukturmember an.In anderen Kontexten bezieht sich auf die Struktur student-Variable an.Allerdings wird das Überladen des Tag Namespaces nicht empfohlen, da sie Bedeutung verdeckt.

Siehe auch

Konzepte

Programmstruktur