Avviso del compilatore (livello 4) C4714
funzione 'funzione' contrassegnata come __forceinline non resa inline
La funzione specificata è stata selezionata per l'espansione inline, ma l'operazione non è stata eseguita.
Benché __forceinline sia un'indicazione più forte di __inline per il compilatore, l'operazione di inline viene comunque eseguita a discrezione del compilatore, ma non vengono utilizzati sistemi euristici per determinare i vantaggi derivanti dalla funzione inline.
In alcuni casi, una particolare funzione non viene resa inline per motivi meccanici.Di seguito sono riportati alcuni esempi di funzioni che non vengono rese inline:
Funzioni che risulterebbero in una mescolanza di SEH ed EH di C++.
Funzioni con oggetti creati tramite costruttore di copia passati per valore quando l'opzione -GX/EHs/EHa è attivata.
Funzioni che restituiscono un oggetto non svuotabile per valore quando l'opzione -GX/EHs/EHa è attivata.
Funzioni con codice assembly inline durante la compilazione senza -Og/Ox/O1/O2.
Funzioni con un elenco di argomenti variabile.
Funzioni con un'istruzione try (gestione delle eccezioni C++).
Nell'esempio seguente viene generato l'errore C4714:
// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
try
{
}
catch (...)
{
}
}
void func2()
{
func1(); // C4714
}
int main()
{
}