Dekleration und Definiton von Namensbereichen
-
Lese gerade das C/C++ Kompendium und bin auf Seite 113 auf folgende Merkwürdigkeit gestoßen:
namespace nvector { struct vektor; vektor add(vektor a, vektor b); }
"Um einen Namensbereich verwenden zu können, deklariert man ihn mit Hilfe des Schlüsselwortes using"
using nvektor;
müsste das nicht
using namespace nvektor
heißen?
-
Vertexwahn schrieb:
müsste das nicht
using namespace nvektor
heißen?
abgsehen vom fehlenden semikolon, ja. ausserdem handelt es sich in diesem falle eben nicht um eine deklaration sondern um eine direktive. wenn es eine deklaration wäre, dürfte man ja bezeichner aus dem importierten namespace nicht selbst neu definieren. das ist aber nun mal (natürlich) erlaubt, und nur dann ein problem, wenn dadurch bei der verwendung mehrdeutigkeiten auftreten.
-
> um eine deklaration sondern um eine direktive.
Was ist für dich eine Deklaration?
In meinem Buch steht:
Deklaration macht einen Bezeichner beim Compiler bekannt
Definition reserviert Speicher.Was ist eine Direktive?
Hab bisher nur von Präprozessor Direktiven gehört
Das man die Definition eines Namensbereichs ausweiten kann ist mir klar (war das mit direktive gemeint – das man Namespaces an verschiednen stellen erweitern kann?)
-
Was ist eine using-Deklaration?
Was ist für dich eine Deklaration?