namespace global ?



  • Hallo,
    ich habe oft gesehen, das ausserhalb von "main" der Namensraum z.B. std festgelegt wird.

    #include <iostream>
    
    using namespace std;
    
    int main(void)
    {
    ...
    Code...
    }
    

    Aber ist das richtig ?
    Sollte der Namensraum nicht innerhalb von main stehen ?

    #include <iostream>
    
    int main(void)
    {
    using namespace std;
    ...
    Code...
    }
    

    Wenn ich den Namensraum für das gesammte Programm beibehalten will, dann ist doch die globale Verwendung nicht böse oder 😕 ?



  • Hallo,

    Im ersten Fall gilt wird der Namensraum halt in der gesamten cpp geöffnet. Wenn du in der cpp außer der main noch weitere Deklarationen/Definitionen hast gilt das eben auch da.
    Sobald die Programme etwas größer werden steht in der main.cpp meist nicht viel mehr als die main selbst. Der Rest ist dann ausgelagert. Dann ist es egal.
    Ich persönlich verzichte aber ganz auf das using namespace.
    Böse ist die verwendung aber nur in Headerdateien.



  • Warum ist die Verwendung in Headerdateien problematisch ?
    Wenn ich in einer Headerdatei einen Namensraum definiere und dann in der main den Namespace "global" setze, dann kann doch nichts passieren 😕 ?



  • Ich benutze using namespace std; nie. Finde es hässlich und so vermeide ich Namenskonflikte.



  • doran schrieb:

    Warum ist die Verwendung in Headerdateien problematisch ?
    Wenn ich in einer Headerdatei einen Namensraum definiere und dann in der main den Namespace "global" setze, dann kann doch nichts passieren 😕 ?

    using namespace in Headern ist problematisch. Nicht die Definition von Namespaces. Btw. benutze ich auch kein using namespace . Wenn es wirklich mal sehr viel zu schreiben ist, kann man notfalls einen rename für einen Namespace machen.



  • Ich meinte nicht die Definition eines Namesbereiches sondern das Öffnen eines solchen.
    using namespace hat in Headerdateien nichts zu suchen.



  • 314159265358979 schrieb:

    Ich benutze using namespace std; nie. Finde es hässlich und so vermeide ich Namenskonflikte.

    +1. Vor allem bei einem so kurzen Namen wie std ist das ja lachhaft...


Anmelden zum Antworten