Namespace Deklaration
Eine Namespace Deklaration angegeben und ordnet einen eindeutigen Namen ein USER-deklarierten Namespace zu.
namespace identifier
Hinweise
Solche Namespaces werden verwendet, um das Problem eines Namenskonflikts in großen Programme und Bibliotheken zu lösen.Programmierer können Namespaces verwenden, um neue Softwarekomponenten und - Bibliotheken zu entwickeln, ohne Namenskonflikte mit vorhandenen Komponenten zu verursachen.
Beispiele:
// namespace_declaration1.cpp
namespace X
{
int i;
double j;
}
int main()
{
X::i++;
}
Die Syntax für eine Namespacedefinition ist:
namespace identifier
{
[ declaration-list ]
}
Eine NAMESPACE Definition kann innerhalb einer anderen NAMESPACE nichtgeschachtelt werden.Jede NAMESPACE Definition muss entweder im Dateigültigkeitsbereich oder direkt in einer anderen NAMESPACE Definitionangezeigt werden.
Beispiele:
// namespace_declaration2.cpp
// C2870 expected
namespace A
{
int j = 3;
int f(int k);
}
namespace Outer
{
int n = 6;
int func(int num);
namespace Inner
{
float f = 9.993;
}
}
int main()
{
namespace local // C2870: not at global scope
{
}
}
Im Gegensatz zu anderen deklarative Bereiche kann die Definition eines Namespace über einige Teile einer einzelnen Übersetzungseinheit aufgeteilt werden.
// namespace_declaration3.cpp
namespace A
{
// declare namespace A variables
int i;
int j;
}
namespace B
{
}
namespace A
{
// declare namespace A functions
void func(void);
int int_func(int i);
}
int main()
{
}
Wenn ein Namespace auf diese Weise fortgesetzt wird, nachdem seine ursprüngliche Definition, die eine Fortsetzung Namespace des Add-Ins Definitionaufgerufen wird.Die ursprüngliche Definition dieses Namespace wird als ursprünglicheNamespacedefinition.
Verwenden dieser Notation kann mit längeren Namen oder in großen Programmen lästig.mit der Deklaration, Using-Direktivenund Namespace auch stellen einfachere Methoden, die Member Namespace zu verweisen.
Eine Namespace Deklaration, ob es einen neuen Namespace, einen unbenannten Namespace oder eine erweiterte Namespacedefinition einschließt, muss von einem Namespace zugeordnetes Text, der in geschweiften Klammern eingeschlossen ist.Die Anweisung
namespace X;
ist ein Syntaxfehler.Die Anweisung
namespace X{};
Ist kein Syntaxfehler, aber ohne Bedeutung.
Hintergrundinformationen finden Sie unter Namespaces.
Der Bezeichner in einer ursprünglichen Namespacedefinition muss im deklarativen Gültigkeitsbereich eindeutig sein, in dem sie verwendet wird.Der Bezeichner ist der Name des Namespaces und wird verwendet, um ihre Member zu verweisen.
Der deklarative Bereich einer Namespacedefinition ist dessen Text.Der Text muss in Klammern eingeschlossen sind () und enthält möglicherweise Deklarationen oder Definitionen von Variablen, Funktionen von Objekten, Vorlagen und geschachtelten Namespaces.Die Deklarationen in der Deklaration Liste müssen Member des Namespaces.Der Name jedes Namespace members wird automatisch mit dem Namen des Namespace und Bereichsauflösungsoperatorqualifiziert.