Namespaces



  • Hier mal ein kleines Beispiel zur Verwendung von Namespaces innerhalb eines Moduls, das die Namespace <compiler> implementiert. Folgender Code sei <main.cc>, wobei die Funktion <StartCompiler()> static sein soll, also zusätzlich in einer anonymen Namespace deklariert und definiert ist. Mache ich es zu kompliziert (möchte keine using-Direktive verwenden) oder ist das so korrekt?

    // Compiler declarations
    namespace compiler {
    
    // Local declarations
    namespace {
    
    int Start(int argc, char** argv);
    
    }  // namespace
    
    }  // namespace compiler
    
    int main(int argc, char** argv) {
      return compiler::Start(argc, argv);
    }
    
    // Compiler definitions
    namespace compiler {
    
    // Local definitions
    namespace {
    
    int Start(int argc, char** argv) {
      return 0;
    }
    
    }  // namespace
    
    }  // namespace compiler
    

    Danke und Gruß,
    T.



  • Welchen Zweck soll der Compiler-Namespace um den Anonymen erfüllen?



  • manni66 schrieb:

    Welchen Zweck soll der Compiler-Namespace um den Anonymen erfüllen?

    vermutlich den gleichen, den ein using namespace compiler; innerhalb aller Funktionen des anonymen namespace hat - nichtqualifizierten Zugriff auf die Inhalte von compiler.



  • pumuckl schrieb:

    manni66 schrieb:

    Welchen Zweck soll der Compiler-Namespace um den Anonymen erfüllen?

    vermutlich den gleichen, den ein using namespace compiler; innerhalb aller Funktionen des anonymen namespace hat - nichtqualifizierten Zugriff auf die Inhalte von compiler.

    Genau, es geht um das Vermeiden der Using-Direktive.



  • Eine IDE wird den nested namespace entsprechend einrücken. Meiner Meinung nach wird das Ganze dadurch nicht unbedingt schöner/übersichtlicher. Aber das ist sicherlich Ansichtssache ...


Anmelden zum Antworten