Häufig braucht man auch teilweise sehr kleine Funktionen, wie z.B. die schon vorgestellte Funktion für die Berechnung eines Maximums. Diese lassen sich zwar problemlos programmieren, haben aber den Nachteil, daß das Programm für den Aufruf der Funktion schon Zeit verbraucht - gerade bei häufig benutzten Funktion sicherlich nicht wünschenswert, da spürbare Performanzverluste auftreten können.
Um dieses Problem zu umgehen, kann man verschiedene Ansätze
wählen. Zum einen könnte man darauf verzichten, die
Funktion zu schreiben und doch jedesmal den gleichen Programmteil
hinschreiben - doch das ist doch sehr aufwendig und stupide. Eine
andere Möglichkeit werden wir später mit den Makros
kennenlernen, doch diese haben ihre eigenen Tücken, da
sie auf Textersetzung basieren.
Eine wesentlich elegantere Möglichkeit ist es, dem Compiler
anzugeben, daß er versuchen soll, die Funktion nicht wie eine
normale Funktion zu behandeln, sondern direkt in den laufenden Code
einzubauen. Damit spart man sich die Schreibarbeit, das Programm ist
lesbarer, aber das Ergebnis ist dasselbe, als ob man die
entsprechenden Befehle jedesmal hingeschrieben hätte. Die
zugehörige Anweisung geht über das Schlüsselwort
inline
, am Beispiel mit dem Maximum (wo es sehr sinnvoll
ist):
inline int maximum(int a, int b) { return (a>b)?a:b; }
Dabei sollte man allerdings ein paar Dinge beachten:
Sowohl die Tatsache, daß das Schlüsselwort genutzt
wird, als auch die Tatsache, daß es fehlt, geben keinen
Aufschluß darüber, was der Compiler wirklich macht, da
inline
nur eine Empfehlung darstellt und umgekehrt
einige Compiler im Rahmen einer Optimierung Funktionen selbständig
inline compilieren.