Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

7.3 Inlinefunktionen

7.3 Inlinefunktionen

Ich hatte kurz erwähnt, dass man hin und wieder auch in Header-Dateien Funktionen einbaut. Wenn dies getan wird, handelt es sich oftmals um s.g. Inlinefunktionen, welche in der Regel aus sehr wenig Quelltext bestehen (oft nur eine Zeile). Doch was hat es mit diesem "inline" auf sich? Um dies zu verdeutlichen, habe ich mir ein kleines Beispiel ausgedacht.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
					
inline int Summe(int iSummand1, int iSummand2) { return iSummand1 + iSummand2; };



// Hauptfunktion der Anwendung ////////////////////////////////////////////////
int main(int argc, char* argv) {
	printf("%i\n", Summe(5, 3));

	return 0;
} // main /////////////////////////////////////////////////////////////////////
					

In Zeile 1 habe ich eine Inlinefunktion deklariert. Auf den ersten Blick, sieht dies wie ein Funktionsprototyp aus, aber wenn Sie genauer hinschauen, sehen Sie, dass da noch mehr steht. Zu Beginn einer solchen Funktion schreibt man das Schlüsselwort "inline" und man muss am Ende ein Semikolon setzen. Des Weiteren wird an dieser Stelle gleich der Quelltext der Funktion mit hingeschrieben, welcher in geschweifte Klammern gesetzt wird. Aber wozu dieser ganze Aufwand? Inlinefunktionen sind etwas ganz besonderes, da der Präprozessor diese 1 zu 1 an die entsprechenden Stellen des Quelltextes kopiert. Der Funktionsaufruf wird also mit dem Inhalt der Inlinefunktion ersetzt und die Funktion selbst, taucht im resultierenden Programm nicht mehr auf. Der Quelltext, welcher dann tatsächlich im Hintergrund ausgeführt wird, sieht wie folgt aus.

 1
 2
 3
 4
 5
 6
					
// Hauptfunktion der Anwendung ////////////////////////////////////////////////
int main(int argc, char* argv) {
	printf("%i\n", 5 + 3);

	return 0;
} // main /////////////////////////////////////////////////////////////////////
					

Warum braucht man so etwas? Nun, Funktionen sind immer gut, um seinen Quelltext zu strukturieren bzw. häufig verwendete Sachen, auslagern zu können. Sie erleichtern somit das Leben des Programmierers. Allerdings hat die ganze Sache einen Haken. Jeder Funktionsaufruf kostet wie bereits besprochen Zeit und benötigt zusätzlichen Speicherplatz. Inlinefunktionen wirken dieser ganzen Sache entgegen, weil sie keine richtigen Funktionen sind. Nur in dem Fall, dass der Präprozessor der Meinung ist, dass der Inhalt der Funktion doch zu groß ist bzw. sich der Inhalt nicht einfach an die entsprechende Stelle einfügen lässt, macht er tatsächlich eine normale Funktion daraus. Sie als Programmierer haben also keinen richtigen Einfluss darauf. Manchmal werden auch Funktionen als inline behandelt, bei welchen Sie gar nicht dieses Schlüsselwort geschrieben haben.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012