Compilerwarnung (Stufe 4) C4714
'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()
{
}