Teilen über


Inlinefunktionen

Das Schlüsselwort inline ist ein Funktionsspezifizierer, der den Compiler anweist, den Code in der Funktionsdefinition für jede Instanz eines Funktionsaufrufs zu ersetzen.

Hinweise

Die Inline-Code-Ersetzung wird nur nach Ermessen des Compilers ausgeführt. Zum Beispiel führt der Compiler eine Funktion nicht inline aus, wenn ihre Adresse akzeptiert wird oder wenn sie für den Inlinevorgang zu groß ist. Wenn der Compiler keine in einer Kopfzeilendatei definierte Funktion inlined, wird er für den Linker markiert, um Verletzungen der One-Definition-Regel (ODR) zu vermeiden.

Für eine Funktion, die als Kandidat für das Inlining betrachtet werden soll, muss die Funktionsdefinition im neuen Stil mit einer Signatur verwendet werden, die den Rückgabetyp und alle Parametertypen deklariert.

Verwenden Sie dieses Format, um eine Inlinefunktion anzugeben:

inlinefunction-definition

Inlinefunktionen generieren schneller und manchmal kleineren Code als der entsprechende Funktionsaufruf:

  • Inlinefunktionen sparen die Zeit, die erforderlich ist, um den Stapel für Argumente und einen Rückgabewert vorzubereiten, und die Zeit, um den Sprung und die Rückgabe eines Funktionsaufrufs auszuführen.

  • Kleine Inlinefunktionen, etwa drei Zeilen oder weniger, erstellen, auch wenn der Vorgang mehrere Male wiederholt wird, weniger Code als der entsprechende Funktionsaufruf, da der Compiler keinen Code generiert, um Argumente und einen Rückgabewert zu behandeln.

  • Der Compiler kann Funktionen optimieren, die inline generiert werden, und die nicht für normale Funktionen verfügbar sind. Der Compiler führt in der Regel keine Optimierungen zwischen verschiedenen Prozeduren aus.

Verwechseln Sie keine Funktionen, die inline mit Inline-Assemblercode verwendet werden. Weitere Informationen zum Inline-Assembler finden Sie unter Inline-Assembler.

Microsoft-spezifisch

Microsoft unterstützt auch die Schlüsselwörter __inline und __forceinline, um den Compiler anzuweisen, den Code in der Funktionsdefinition für jede Instanz eines Funktionsaufrufs zu ersetzen. Das Schlüsselwort __inline ist ein Synonym für inline. Das Schlüsselwort __forceinline weist den Compiler an, die Heuristik zu lockern, um zu entscheiden, ob die Funktion inline sein soll, jedoch garantiert dies nicht, dass eine Funktion inline sein wird.

Für die Kompatibilität mit früheren Versionen sind _inline_forceinline Synonyme für __inlinebzw. __forceinline, sofern die Compileroption /Za (Spracherweiterungen deaktivieren) nicht angegeben ist.

ENDE der Microsoft-spezifischen Informationen

Siehe auch

inline, __inline, __forceinline