In C++ kann man eine Funktion als inline
deklarieren.
Das bedeutet, daß der Compiler -wenn er will- dafür gar keine eigene
Funktion erzeugt, sondern den entsprechenden Maschinencode direkt an der
Aufrufstelle einfügt.
Dadurch kann ein Programm schneller werden, aber unter Umständen auch größer (wenn die ,,Funktion`` an vielen Stellen aufgerufen wird). Der Compiler wird deshalb nicht beliebig komplexe und lange Funktionen tatsächlich inline kompilieren, sondern nur kurze, einfache. Es steht jedem Compiler frei, selbst zu entscheiden, welche Funktionen er so behandelt.
Die Tatsache, daß unter Umständen gar keine echte Funktion existiert, hat
natürlich zur Folge, daß man die Adresse einer inline
-Funktionen
nicht bestimmen kann.
Außerdem muß der Compiler in jedem betroffenen Modul die vollständige Definition einer solchen Funktion sehen können, weil er sie ja sonst nicht expandieren kann. Daher kommt -bei einer Aufteilung in eine Deklarationsdatei und eine Definitionsdatei- eine normale Funktionsdefinition zwar in die Definitionsdatei, die Definition einer inline-Funktion dagegen in die Deklarationsdatei, weil die ja von allen Anwendern der Funktion eingebunden wird.