Wofür inline ?



  • Hi,

    Wofür steht das inline ? Und was bringt das ?

    Mfg



  • Inline ist eine Empfehlung an den Compiler. Funktionen, die nicht sehr umfangreich sind, können als Inline deklariert werden. Dadurch wird die Funktion nicht mehr als Funktion aufgerufen, was etwas langsamer ist, sondern der Inhalt wird direkt ausgeführt. Vorteil ist eben, dass du im Quellcode noch die Funktion siehst, sie aber im ausführbaren Programm so behandelt wird, als stünde sie direkt im Hauptprogramm.

    Wichtig ist, dass der Compiler das nicht machen muss, sondern der Programmierer ihm nur sagt, dass er das machen kann!!



  • Hallo MythosFFX,

    bei inline wird der code quasi direkt eingefügt (ähnlich makros nur "sicherer"). Das hat den Vorteil das der ganze Overhead eines Funktionsaufrufs (Rücksprungadresse, Parameter auf den Stack pushen) wegfällt und im endeffekt zu einem schnellerem Programm führt.

    Dave



  • Dave__ schrieb:

    und im endeffekt zu einem schnellerem Programm führt

    fuehren kann

    zuviele lange inline funktionen blaehen den code auf - mehr zum laden, viel redundanter code - das ganze wird aufgeblaeht und dadurch langsamer.

    generell sollte man inline deshalb wirklich nur bei sehr winzigen sachen verwenden, oder am besten ganz weg lassen (bzw. nur noch dazu verwenden, eine funktion in einer header datei zu definieren) denn die modernen compiler machen sowieso das was sie wollen (und unter uns gesagt: das machen sie ziemlich gut)



  • Hi,
    Vielen Danke für euche Antworten.

    Muss ich in inline nur im Header definieren oder auch in der Source datei dazu schreiben oder ist das egal ?

    Bye



  • MythosFFX schrieb:

    Muss ich in inline nur im Header definieren oder auch in der Source datei dazu schreiben oder ist das egal ?

    da inline funktionen (aehnlich wie makros mit #define) direkt im code ersetzt werden, muss die definition der funktion von ueberall zugaenglich sein.

    lange rede, kurzer sinn: inline funktionen muessen im header stehen - und nicht in der .cpp datei.


Anmelden zum Antworten