Partager via


Avertissement du compilateur (niveau 4) C4714

fonction 'fonction' marquée comme __forceinline non inline

La fonction donnée a été sélectionnée pour l'expansion inline, mais le compilateur n'a pas effectué la fonctionnalité inline.

Bien que __forceinline soit une indication plus forte que __inline pour le compilateur, la fonctionnalité inline est toujours appliquée à la discrétion du compilateur, mais aucun heuristique n'est utilisé pour déterminer les avantages d'appliquer la fonctionnalité inline à cette fonction.

Dans certains cas, le compilateur n'appliquera pas la fonctionnalité inline à une fonction particulière pour des raisons mécaniques. Par exemple, le compilateur n'appliquera pas la fonctionnalité inline à :

  • Une fonction si cela conduirait à mélanger à la fois SEH et C++ EH.

  • Certaines fonctions avec des objets construits par copie passés par une valeur lorsque -GX/EHs/EHa est actif.

  • Des fonctions qui retournent un objet déroulable par une valeur lorsque -GX/EHs/EHa est actif.

  • Des fonctions avec un assembly inline lors d'une compilation sans -Og/Ox/O1/O2.

  • Des fonctions avec une liste d'arguments variable.

  • Une fonction avec une instruction try (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()
{
}