Condividi tramite


Avviso del compilatore (livello 4) C4714

funzione 'function' contrassegnata come __forceinline non inlined

La funzione specificata è stata selezionata per l'espansione inline, ma il compilatore non ha eseguito l'inlining.

Sebbene __forceinline sia un'indicazione più forte del compilatore rispetto __inlinea , l'inlining viene comunque eseguito a discrezione del compilatore, ma non viene usata alcuna euristica per determinare i vantaggi derivanti dall'inlining di questa funzione.

In alcuni casi, il compilatore non inlinerà una determinata funzione per motivi meccanici. Ad esempio, il compilatore non sarà inline:

  • Una funzione se comporta la combinazione sia di edizione Standard H che di EH C++.

  • Alcune funzioni con oggetti costruiti di copia passati per valore quando -GX/EHs/EHa è attivo.

  • Funzioni che restituiscono un oggetto rimovibile in base al valore quando -GX/EHs/EHa è attivo.

  • Funzioni con assembly inline durante la compilazione senza -Og/Ox/O1/O2.

  • Funzioni con un elenco di argomenti variabile.

  • Funzione con un'istruzione try (gestione delle eccezioni C++).

L'esempio seguente genera l'errore C4714:

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

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

int main()
{
}