Compilerwarnung (Ebene 4) C4714

Funktion 'Funktion', die als __forceinline nicht inlineiert markiert ist

Die angegebene Funktion wurde für die Inlineerweiterung ausgewählt, aber der Compiler hat die Inlining nicht ausgeführt.

Obwohl __forceinline ein stärkerer Hinweis auf den Compiler ist als __inline, wird die Inlinierung nach wie vor nach Ermessen des Compilers durchgeführt, aber keine Heuristiken werden verwendet, um die Vorteile zu bestimmen, die von der Einlinung dieser Funktion profitieren.

In einigen Fällen wird der Compiler aus mechanischen Gründen keine bestimmte Funktion inlineieren. Beispielsweise wird der Compiler nicht inline:

  • Eine Funktion, wenn dies dazu führen würde, sowohl SEH als auch C++ EH zu mischen.

  • Einige Funktionen mit kopierten Objekten, die nach Wert übergeben werden, wenn -GX/EHs/EHa aktiviert ist.

  • Funktionen geben ein abwickelbares Objekt nach Wert zurück, wenn -GX/EHs/EHa aktiviert ist.

  • Funktionen mit Inlineassembly beim Kompilieren ohne -Og/Ox/O1/O2.

  • Funktionen mit einer Variablenargumentliste.

  • Eine Funktion mit einer try (C++-Ausnahmebehandlung) -Anweisung.

Im folgenden Beispiel wird C4714 generiert:

// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
   try
   {
   }
   catch (...)
   {
   }
}

void func2()
{
   func1();   // C4714
}

int main()
{
}