Pour rendre la fonction inline utiliser le mot-clé en ligne:
inline int maximum(int x, int y, int z) // note the inline keyword
{
int max = x;
if (y > max)
max = y;
if (z > max)
max = z;
return max;
}
Si la fonction est un membre d'une classe/struct puis définir simplement à l'intérieur de la classe (par opposition à l'extérieur) rend en ligne.
Supposons que vous avez l'appel:
int f = maximum(3, 4, 5)
La puissance du compilateur élargit l'appel à quelque chose comme:
int max = x;
if (y > max)
max = y;
if (z > max)
max = z;
int z = max;
Il y a certains frais généraux pour appeler une fonction, fonctions si inline vous donnent des raisons de commodité fonctionne avec les performances des macros C. Mais cela ne veut pas dire que vous devriez toujours les utiliser, dans la plupart des cas, le compilateur est mieux à même de décider quand des optimisations de ce type sont nécessaires et pourraient même ne pas honorer votre requête.
Vous pouvez en savoir plus sur les fonctions inline et comment (et quand) pour les utiliser à C++ FAQ Lite et ce GotW
Mettre « en ligne » en face de la définition de la fonction. –
Vous devez également placer la définition de la fonction dans un en-tête (ou la rendre disponible dans chaque unité de traduction ... –
Gardez à l'esprit que le mot-clé 'inline' n'a généralement aucun effet si une fonction est inline ou non. Avec tout compilateur raisonnablement moderne, il vous permettra de définir la fonction à plusieurs endroits, à condition que toutes les définitions soient identiques (par exemple, vous pourriez avoir défini cela dans plusieurs en-têtes si c'était «inline») –