Avertissement du compilateur (niveau 4) C4714
fonction « fonction » marquée comme __forceinline non inlined
La fonction donnée a été sélectionnée pour l’extension inline, mais le compilateur n’a pas effectué l’incorporation.
Bien qu’il __forceinline
s’agit d’une indication plus forte pour le compilateur que __inline
, l’incorporation est toujours effectuée à la discrétion du compilateur, mais aucune heuristique n’est utilisée pour déterminer les avantages de l’incorporation de cette fonction.
Dans certains cas, le compilateur n’inlinera pas une fonction particulière pour des raisons mécaniques. Par exemple, le compilateur n’est pas inline :
Fonction si elle entraînerait le mélange de SEH et C++ EH.
Certaines fonctions avec des objets construits copiés transmis par valeur lorsque -GX/EHs/EHa est activé.
Fonctions retournant un objet déroutable par valeur lorsque -GX/EHs/EHa est activé.
Fonctions avec assembly inline lors de la compilation sans -Og/Ox/O1/O2.
Fonctions avec une liste d’arguments variables.
Fonction avec une
try
instruction (gestion des exceptions C++).
L’exemple suivant génère l’erreur C4714 :
// C4714.cpp
// compile with: /Ob1 /GX /W4
__forceinline void func1()
{
try
{
}
catch (...)
{
}
}
void func2()
{
func1(); // C4714
}
int main()
{
}