using after include statement



  • Hallo,

    ich habe vor kurzem folgenden stylistischen Aufbaue von include und using gesehen (wo weiß ich leider nicht mehr):

    #include <iostream>
    	using std::cin;
    	using std::cout;
    	using std::endl;
    
    #include <string>
    	using std::string;
    
    #include <vector>
    	using std::vector;
    
    int main(int argc, char** argv) {
    ...
    }
    

    Ich beschäftige mich mit C++ noch nicht so lange und habe diese Form noch nirgends anders gesehen gehabt. Finde sie jetzt persönlich auch nicht schlecht. Daher wollte ich hier mal nachfragen, ob diese Form doch gebräuchlicher ist, als mir bisher bekannt? Oder ist es schlechter Stil? Mich würden dazu eure Meinungen interessieren.



  • using im .cpp File ist OK.
    using im .h File innerhalb eines eigenen Namespace ist auch OK.
    using im .h File im global Namespace ist PFUI.

    Ich persönlich schreibe auch immer erst alle #include und erst danach alle using .

    Und ich verwende persönlich auch kaum bis gar nicht using in .cpp Files sondern nur in Header-Files innerhalb des eigenen Namespace. Finde ich einfacher von der Wartung her. z.B. kann .cpp-lokales using lästig werden man mal Code von einem .cpp File in ein anderes verschiebt. Und es fällt mir ohne .cpp-lokales using leichter Klassen im ganzen Projekt einheitlich entweder überall mit explizitem Namespace:: oder ohne Namespace:: zu referenzieren.
    An manchen Stellen std::string und an anderen wieder nur string finde ich persönlich ... ungünstig.

    Was ich manchmal mache ist using oder gleich using namespace lokal in einer Funktion. Speziell wenn der Namespace einen sehr langen Namen hat und/oder tief verschachtelt ist.

    ps: Was üblich angeht: ich hab' die Variante die du zeigst - also abwechselnd #include und using - noch nirgends gesehen.



  • Man weiß bei Headern jejenseits der STL nicht was das für Auswirkung auf folgende Includes hat, auch wenn es optisch ansprechend ist.



  • Ja, das stimmt leider auch.
    Wenn es sich nur um Headers handelt die alle "gute Teamplayer" sind und alles hübsch in ihren eigenen Namespaces machen, dann müsste es egal sein.
    Was aber leider nicht auf alle Headers zutrifft.



  • style frage schrieb:

    Hallo,

    ich habe vor kurzem folgenden stylistischen Aufbaue von include und using gesehen (wo weiß ich leider nicht mehr):

    #include <iostream>
    	using std::cin;
    	using std::cout;
    	using std::endl;//lölchen, bin ich schlecht
    
    #include <string>
    	using std::string;//was denn sonst?
    
    #include <vector>
    	using std::vector;//was denn sonst?
    
    int main(int argc, char** argv) {
    ...
    }
    

    ... Oder ist es schlechter Stil? Mich würden dazu eure Meinungen interessieren.

    Offensichtlicher Maso-Stil.

    Kannste gerne machen, wenn Du nach rituellen Selbstgeißelungshandlungsanweisungen suchst, die das Seelenheil respektive nicht sofort umkippende Programme versprechen. Progger sind *enorm* abergläubisch, was das angeht. 90% oder mehr aller Stil-Anweisungen sind totaler Unfug. Ich erinnere bloß mal an die ungarische Notation, die uns seit mehr als 20 Jahren verfolgt; lange Zeit war man als UN-Ketzer benachteiligt, weil sie so weit verbreitet war.

    Wäre fein, wenn Du den Stil (und jeden anderen Maso-Stil am besten auch) dann nicht dauernd gegenüber meinen Nobes in diesem Forum vormachst.



  • Hat schon mal jemand so etwas versucht? 😃

    #define IMPORT cin cout endl string vector
    #include "import.hpp"
    
    int main()
    {
    	cout << string("Hihi") << endl;
    }
    


  • So einen Stil wuerde ich in normalen Dateien nicht machen. Man ist nur staendig am rumschreiben, wenn man mal was anderes braucht. Da schon lieber die paar mal std:: ausschreiben oder gleich ein using namespace std.

    Ich benutze aber gelegentlich using, um so grundlegend wichtige Dinge wie move, forward, unique_ptr in meinen lokalen Namespace zu ziehen.


Log in to reply