#pragma once



  • MaSTaH schrieb:

    Achso, also merkt der Compiler sich dass dort ein #pragma once vorkommt und öffnet sie nicht zweimal. Wenn er aber #pragma once nicht kennt trifft er auf die Include-Guards. Hab ich das jetzt richtig verstanden??? Deshalb also doppelt gemoppelt... Clever clever

    Ganz genau!



  • Schade, dass es nicht Standard ist 😞

    Kann ja aber noch werden 🙂



  • Irgendwer schrieb:

    Schade, dass es nicht Standard ist 😞
    Kann ja aber noch werden 🙂

    braucht es nicht.
    gcc geht so vor, daß er include-guards erkennt und dann genauso effizient behandelt wie der andere die #pragmas. also die datei einfach nicht mehr aufmacht.
    ms könnte so nett sein, das auch zu lernen.



  • Hat gcc nicht auch mittlerweile ein pragma once? Ich benutze diesen COmpiler zwar nicht, aber bin der Meinung in einem GCC-Beispiel in den weitern des Webs sowas gesehen zu haben.

    In meinem VC++-Projekten benutze ich nur pragma once. Und wenn es der anderer Compiler nicht untertützt, hat dieser halt pech. 😉



  • Artchi schrieb:

    Hat gcc nicht auch mittlerweile ein pragma once? Ich benutze diesen COmpiler zwar nicht, aber bin der Meinung in einem GCC-Beispiel in den weiten des Webs sowas gesehen zu haben.

    kurz getestet:
    gcc-3.4.3 gibt mit -Wunknown-pragmas keine warnung bei der benutzung von #pragma once aus.

    mfg



  • volkard schrieb:

    Irgendwer schrieb:

    Schade, dass es nicht Standard ist 😞
    Kann ja aber noch werden 🙂

    braucht es nicht.
    gcc geht so vor, daß er include-guards erkennt und dann genauso effizient behandelt wie der andere die #pragmas. also die datei einfach nicht mehr aufmacht.
    ms könnte so nett sein, das auch zu lernen.

    Kann schon sein jedoch seh ich nicht den Sinn darin, dass man den Compilerbauern das Leben unnütz schwer macht (obwohl so schwer ist das erkennen von include guards eigentlich auch nicht). Jedenfals wird dadurch auch eine Fehlerquelle des Programmirers eleminiert. Bei include Guards muss man den Namen zweimal wiederholen. So wenn nun ein Tippfehler im Namen unterläuft. Dies ist ein Fehler der sich auch noch nicht sofort zeigt. Man muss ein Header wirklich zweimal includen damit es kracht. Dies kann dazuführen, dass man den Fehler erste lange Zeit nachdem man ihn gebaut hat entdeckt.



  • VS.NET verwendet übrigens keine include-Guards mehr. Dort steht in den generierten Headern nur noch #pragma once.



  • Wer holt eigentlich so alte Threads wieder hoch? 😃



  • ka 😃



  • in etwa wie die stdafx datein von vc++, obwohl sich das jeder selbst machen koennte ist es keine schlechte Idee diese standardmaeßig bei vc++ zu verwenden

    nicht das #pragma once keine gute Idee ist aber ich halte mich halt immer an KISS
    je mehr schluesselwoerter es gibt desto schlechter behaelt man ja den Ueberblick

    und der g++ compiler ist so schau und checkt das nur mit #ifdefs ob er eine datei nochmal angreift oder nicht?



  • MaSTaH schrieb:

    Wer holt eigentlich so alte Threads wieder hoch? 😃

    Ist doch geil? 😃



  • denk nicht, dass niemand weiß, wer du bist -- mods sehen alles 😉



  • @leo ich finde so ein

    #pragma once
    

    viel schöner und übersichtlicher als ein

    #ifndef XXX
    #define XXX
    //code
    #endif
    


  • otze schrieb:

    @leo ich finde so ein

    #pragma once
    

    viel schöner und übersichtlicher als ein

    #ifndef XXX
    #define XXX
    //code
    #endif
    

    übersichtlicher fände ich ein ändern der sprache dahingehend, daß headers niemals mehrfach inkludiert werden, außer man schreibt #pragma multiple_include hinein.



  • ok stimmt eigentlich, #pragma once ist doch uebersichtlicher, mein fehler


Anmelden zum Antworten