Makro oder inline Funktion



  • Hi
    wenn man in C++ programmiert, was sollte man verwenden?
    Ein Makro wie

    #define MIN(x,y) (x<y ? x : y)
    

    oder besser eine inline Funktion wie

    inline int Min(int x, int y) {return x<y ? x : y;}
    

    ?
    Also allgemein gesagt: Wo liegen Vor- und Nachteile von Makros und inline Funktionen und was sollte man in C++ eher verwenden?
    Das ganze betrifft auch die Frage nach der Definition von Konstanten. Sollte man in C++ lieber

    #define
    

    verwenden oder

    const
    

    und wo liegen hier Vor- und Nachteile?



  • Hallo

    Ich würde sagen, dass du immer versuchen solltest inline-Funktionen und const zu benutzen, weil sie eine Typsicher sind und nicht einfach nur Text ersetzen. Scott Meyers schreibt dazu auch ein nettes Kapitel in seinen Buch "Effektiv c++ programmieren"

    chrische



  • Wenn du ein Makro durch eine inline Funktion oder ein "const" ersetzen kannst, dann tu das.
    Es gibt einige Dinge wo man Makros nach wie vor braucht bzw. sie Sinn machen, aber wohl nicht für solche Dinge wie min/max oder eben Konstanten.


Anmelden zum Antworten