Inline-Funktionen



  • Kann mir jemand bitte erklären, wie genau ich Inline-Funktionen benutze oder bestätigen, ob das richtig ist, was ich denke?

    Hier am Beispiel einer Inline-Funktion, die einen übergebenen Wert (als Referenz) erhöht.

    Man braucht die Headerfile

    // inlineFunktionen.h
    extern inline void increaseCounter(int&);
    

    ,

    die Funktionsdefinition

    //increaseCounter.cpp
    #include "inlineFunktionen.h"
    
    inline void increaseCounter(int& counter)
    {
        counter++;
    }
    

    und dann kann man sie benutzen:

    #include "inlineFunktionen.h"
    
    int main()
    {
        int counter = 5;
        increaseCounter(counter);
        printf("%d", counter); //-> 6
    }
    

    Soweit alles richtig oder habe ich was vergessen/falsch gemacht?

    PS: Ich entschuldige mich für das C-C++-Misch-Masch, befinde mich gerade im Übergang ;P



  • Inline-Funktionen müssen vollständig der Übersetzungseinheit (ÜE) zur Verfügung stehen, d.h. du mußt sie auch im Header definieren.

    Eigentlich müßte sich bei deinem Beispiel der Linker beschweren (außer der Compiler hat sich über die Empfehlung 'inline' hinweggesetzt -)



  • Mit "link-time code generation" braucht muß es nicht mehr in der ÜE definiert sein. Soweit ich weiß ist das "inline"-Attribut bei modernen compilern sowieso hinfällig.


Anmelden zum Antworten