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()
{
}