Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
'Funktion', als __forceinline markiert, ist keine Inline-Funktion
Die festgelegte Funktion wurde als Inlinefunktion angegeben, aber nicht entsprechend erweitert.
Obwohl der Compiler durch __forceinline stärker gebunden wird als durch __inline, entscheidet auch hier der Compiler darüber, ob eine Funktion "inline" erweitert wird oder nicht. Jedoch wird nicht heuristisch ermittelt, welche Vorteile die Inline-Erweiterung dieser Funktion bietet.
In einigen Situationen erweitert der Compiler eine bestimmte Funktion aus technischen Gründen nicht "inline".Beispielsweise erweitert der Compiler die folgenden Funktionen nicht "inline":
Funktionen, bei denen strukturierte Ausnahmebehandlung und C++- Ausnahmebehandlung gemischt würden.
Einige Funktionen, deren Objekte durch Kopieren erstellt und mit Wert übergeben werden, wenn -GX/EHs/EHa aktiviert ist.
Funktionen, die ein nicht entladbares Objekt anhand des Werts zurückgeben, wenn -GX/EHs/Eha aktiviert ist.
Funktionen mit Inlineassembly, wenn ohne -Og/Ox/O1/O2 kompiliert wird.
Funktionen mit variabler Argumentliste.
Funktionen mit einer try-Anweisung (C++-Ausnahmebehandlung).
Im folgenden Beispiel wird C4714 generiert:
// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
try
{
}
catch (...)
{
}
}
void func2()
{
func1(); // C4714
}
int main()
{
}