Sie sollten auch die Community nach den Empfehlungen für die Verwendung von Inline fragen.
Martin York
Antworten:
86
inlineist das Schlüsselwort in C ++ und C99.
__inlineist ein herstellerspezifisches Schlüsselwort (z. B. MSVC ) für die Inline-Funktion in C, da C89 es nicht hat.
__inline__ist ähnlich, stammt __inlineaber von einem anderen Satz von Compilern.
__forceinlineist ein anderes herstellerspezifisches (hauptsächlich MSVC) Schlüsselwort, das mehr Kraft zum Inline-Funktionieren der Funktion als zum __inlineHinweis verwendet (z. B. Inline, selbst wenn dies zu schlechterem Code führt).
Es gibt auch __attribute__((always_inline))in GCC und klirren.
Vielleicht sollten Sie die "Microsoft-spezifische" Sprache in "herstellerspezifisch" oder ähnliches ändern. Viele der eingebetteten entwicklungsübergreifenden Toolsets, die ich verwende, unterstützen auch __inline und __forceinline. Die Welt ist größer als MSOFT ;-)
Dan
Alles, was __forceinline tut, ist, die Analyse der Overhead- und Nutzenfaktoren von Inlining zu überspringen und es trotzdem zu "erzwingen". Wenn Sie nicht wirklich inline sein müssen, sollten Sie bei C ++ einfach bei Inline bleiben oder bei C bei __inline. Soweit ich weiß, stammt __forceinline von MSVC, wird aber an anderen Stellen verwendet und definiert, insbesondere von GCC (as oben angegeben) im Attributausdruck. Aber natürlich müssen Sie die Inline-Header oder Flags verwenden, damit sie verwendet werden können. Einige IDEs deaktivieren dies standardmäßig, andere aktivieren es standardmäßig. Ich würde klar steuern, wenn Sie ein Cross-Entwickler sind!
Osirisgothra
20
__inline, __inline__Und __forceinlinesind alle Implementierung spezifisch. Aufgrund des doppelten Unterstrichs sind alle Bezeichner für die Implementierung reserviert und sollten daher nicht mit den in Anwendungen verwendeten Bezeichnern in Konflikt stehen.
Antworten:
inline
ist das Schlüsselwort in C ++ und C99.__inline
ist ein herstellerspezifisches Schlüsselwort (z. B. MSVC ) für die Inline-Funktion in C, da C89 es nicht hat.__inline__
ist ähnlich, stammt__inline
aber von einem anderen Satz von Compilern.__forceinline
ist ein anderes herstellerspezifisches (hauptsächlich MSVC) Schlüsselwort, das mehr Kraft zum Inline-Funktionieren der Funktion als zum__inline
Hinweis verwendet (z. B. Inline, selbst wenn dies zu schlechterem Code führt).Es gibt auch
__attribute__((always_inline))
in GCC und klirren.quelle
__inline
,__inline__
Und__forceinline
sind alle Implementierung spezifisch. Aufgrund des doppelten Unterstrichs sind alle Bezeichner für die Implementierung reserviert und sollten daher nicht mit den in Anwendungen verwendeten Bezeichnern in Konflikt stehen.inline
ist das einzige C ++ - Schlüsselwort.quelle
Für den Visual Studio-Compiler bedeutet dies:
Inline - Vorschlag an den Compiler, Ihren Code zu inline
__forceinline - überschreibt die integrierte Compileroptimierung und generiert Inline-Code
Weitere Informationen finden Sie unter: http://msdn.microsoft.com/en-us/library/z8y1yy88%28VS.71%29.aspx
quelle