Fonctions inline

Le mot clé inline est un spécificateur de fonction qui indique au compilateur de substituer le code dans la définition de fonction pour chaque instance d'un appel de fonction.

Notes

La substitution se produit uniquement à la discrétion du compilateur. Par exemple, le compilateur n'inclut pas une fonction si son adresse est prise ou si elle trop volumineuse pour être incluse. Lorsque le compilateur n’inclut pas une fonction définie dans un fichier d’en-tête, elle est marquée pour l’éditeur de liens afin d’éviter les violations de règle de définition unique (ODR).

Pour qu’une fonction soit considérée comme candidate à l’inclusion, elle doit utiliser la définition de fonction de nouveau style avec une signature qui déclare le type de retour et tous les types de paramètres.

Utilisez la forme suivante pour spécifier une fonction inline :

inline function-definition

Les fonctions incluses génèrent du code plus rapide et parfois plus court que l’appel de fonction équivalent :

  • Les fonctions incluses permettent de gagner du temps pour préparer la pile pour les arguments et une valeur de retour, ainsi que du temps pour exécuter le saut et le retour d’un appel de fonction.

  • Même répétées plusieurs fois, les petites fonctions incluses, de maximum trois lignes, créent moins de code que l'appel de fonction équivalent, car le compilateur ne génère pas de code pour gérer les arguments et une valeur de retour.

  • Le compilateur peut optimiser des fonctions générées incluses de différentes manières indisponibles pour des fonctions normales. Le compilateur n’effectue généralement pas d’optimisations entre différentes procédures.

Ne confondez pas les fonctions qui utilisent inline avec le code assembleur inclus. Pour plus d’informations sur l’assembleur inclus, consultez Assembleur inclus.

Section spécifique à Microsoft

Microsoft prend également en charge les mots clés __inline et __forceinline pour indiquer au compilateur de substituer le code dans la définition de fonction pour chaque instance d'un appel de fonction. Le mot clé __inline est un synonyme de inline. Le mot clé __forceinline indique au compilateur d’assouplir l’heuristique déterminant l’opportunité d’inclure la fonction, même s’il ne garantit pas qu’une fonction sera incluse.

Pour la compatibilité avec les versions précédentes, _inline et _forceinline sont synonymes respectivement de __inline et __forceinline, sauf si l’option du compilateur /Za (Désactiver les extensions de langage) est spécifiée.

FIN de la section spécifique à Microsoft

Voir aussi

inline, __inline, __forceinline