hübsche anwendung von #define



  • Ben04 schrieb:

    Hörte mal Leute die Argument gegen Makros die ihr hier anführt sind ja wohl sowas von Schwachsinn. Dass man sich das Genick bricht wenn man Anfängerfehler Numero Uno begeht ist doch wohl klar und, dass Makros keine Funktionen erstetzen auch.

    Damit willst du uns was sagen? Der Gag ist ja, dass bisher kein einziges Argument gegen Makros im Allgmeinen gefallen ist, nur gegen die, die bisher gepostet sind. 🙂

    Es wird dir natürlich auch nicht so schnell gelingen, ein sinnvolles Makro zu posten, außer es handelt sich um ein Include-Guard. 😉 Was anscheinend noch recht beliebt ist, sind Makros zum loggen inkl. Variablenname. Ich persönlich habe für sowas keine Verwenung, aber zumindest ist das nicht etwas, was man durch andere Sprachmittel ersetzen kann, daher okay.



  • Ben04 schrieb:

    Jedenfals hast du dir als du das geschrieben hast keine Gedanken über Sicherheit gemacht und ob es mit Templates nicht besser geht:

    template<class T>
    inline void SafeDelete(T*&t)
    {
      delete t;
      t=NULL;
    }
    

    Wenn man sowas schon braucht, dann wäre es IMHO schöner noch ein ASSERT reinzubasteln. Kost' ja nix.

    template<class T>
    inline void SafeDelete(T*& t)
    {
      ASSERT(t);
      delete t;
      t = 0;
    }
    


  • Man darf doch 0-Zeiger löschen. An manchen Stellen kann man das durchaus auch mal nutzen, so dass es nicht immer ein Hinweis auf einen Fehler ist.
    btw. ich kapier euer "T*&" nicht. 😉 :p 🤡



  • Optimizer schrieb:

    Man darf doch 0-Zeiger löschen. An manchen Stellen kann man das durchaus auch mal nutzen, so dass es nicht immer ein Hinweis auf einen Fehler ist.

    Kann man geteilter Meinung drüber sein. Ich halte es in 90% der Fälle für ein unbeabsichtigtes Verhalten wenn man ein delete auf einen Nullpointer macht. Dann würde ich gerne darauf aufmerksam gemacht werden.

    Optimizer schrieb:

    btw. ich kapier euer "T*&" nicht. 😉 :p 🤡

    Du willst ja den Zeiger auf 0 setzen, nicht bloß eine Kopie.



  • Das man define vermeiden sollte steht schon in Effektiv C++ programmieren.

    Also für mich ist der mächtige Präprozessor mit den DEFINEs einer der Gründe, wieso C++ meine Lieblingssprache ist 🙂



  • Ja, es ist immer wieder aufs neue eine Herausforderung weitestgehend auf den preprocessor zu verzichten :p .



  • Es wird dir natürlich auch nicht so schnell gelingen, ein sinnvolles Makro zu posten, außer es handelt sich um ein Include-Guard. Was anscheinend noch recht beliebt ist, sind Makros zum loggen inkl. Variablenname. Ich persönlich habe für sowas keine Verwenung, aber zumindest ist das nicht etwas, was man durch andere Sprachmittel ersetzen kann, daher okay.

    Was ist mit bedingter Compilierung? Auf manchen Plattformen so, auf anderen so?



  • MaSTaH schrieb:

    Optimizer schrieb:

    btw. ich kapier euer "T*&" nicht. 😉 :p 🤡

    Du willst ja den Zeiger auf 0 setzen, nicht bloß eine Kopie.

    Da würds ein T& auch tun. 😉



  • Optimizer schrieb:

    Ich nicht, weil du so sauberen Ärger bekommst, wenn du das nicht in einem Block zusammenfasst

    Ben04 schrieb:

    Naja über Schöhnheit kann man bekanntlich streiten. Jedenfals hast du dir als du das geschrieben hast keine Gedanken über Sicherheit gemacht und ob es mit Templates nicht besser geht

    Sry, aber hab ich etwa die Ironie Tags vergessen? Vielleicht sollte ich es nochmal explizit erwähnen. 🙄



  • Optimizer schrieb:

    MaSTaH schrieb:

    Optimizer schrieb:

    btw. ich kapier euer "T*&" nicht. 😉 :p 🤡

    Du willst ja den Zeiger auf 0 setzen, nicht bloß eine Kopie.

    Da würds ein T& auch tun. 😉

    So finde ich es aber schöner 😉 .


Anmelden zum Antworten