Was sind die Unterschiede zwischen diesen vier Inline (Schlüssel) Wörtern?Inline vs __inline vs __inline__ vs __forceinline?
inline
, __inline
, , __forceinline
.
Was sind die Unterschiede zwischen diesen vier Inline (Schlüssel) Wörtern?Inline vs __inline vs __inline__ vs __forceinline?
inline
, __inline
, , __forceinline
.
inline
ist das Schlüsselwort, in C++ und C99.
__inline
ist ein herstellerspezifisches Schlüsselwort (z. B. MSVC) für Inline-Funktion in C, da C89 es nicht hat.
ist ähnlich wie __inline
, stammt aber aus einer anderen Gruppe von Compilern.
__forceinline
ist ein weiteres herstellerspezifisches Schlüsselwort (hauptsächlich MSVC), das die Inline-Funktion stärker anweist als der Hinweis (z. B. inline, selbst wenn es zu schlechterem Code führt).
Es gibt auch __attribute__((always_inline))
in GCC und Clang.
__forceinline ist ein stärkerer Hinweis als inline, aber immer noch ein Hinweis (http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.80%29.aspx). –
Vielleicht überlegen Sie, die "Microsoft-spezifische" Sprache zu "Hersteller-spezifisch" oder etwas Ähnliches zu ändern. Viele der integrierten Cross-Development-Toolsets, die ich verwende, unterstützen auch __inline und __forceinline. Die Welt ist größer als MSOFT ;-) – Dan
Ups versehentlich CW-ed den Beitrag. Was auch immer. – kennytm
__inline
, und __forceinline
sind alle implementierungsspezifisch. Aufgrund des doppelten Unterstrichs sind sie alle für die Implementierung reservierte Kennungen und sollten daher nicht mit Kennungen kollidieren, die in Anwendungen verwendet werden.
inline
ist das einzige C++ - Schlüsselwort.
Für den Visual Studio-Compiler es bedeutet:
inline - Vorschlag an den Compiler Code
__forceinline Inline - überschreibt die eingebaute Compiler-Optimierung und erzeugt Inline-Code
Für mehr det ails siehe: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx
Sie sollten auch die Community fragen, was die Empfehlung für die Verwendung von Inline sind. –