Comment déclarer les fonctions inline en C ++

En C ++, vous désignez une fonction C ++ avec le mot-clé inline pour faire une demande pour le compilateur pour améliorer la performance de la fonction. Selon plusieurs facteurs, le compilateur peut intégrer le code de la fonction dans le courant de code de l'appelant et d'optimiser le code en ligne expansée. Inline est une demande, pas une garantie. Le coût de inline est habituellement une augmentation de la taille du code. Lisez la suite pour savoir comment déclarer les fonctions inline en C ++.

Instructions

1 Effectuer des fonctions en ligne selon les critères suivants. Le code à l'intérieur des accolades de la fonction ne doit pas dépasser trois lignes. Les appels à la fonction du programme devraient se chiffrer en centaines ou plus. Gardez à l'esprit que inlining trop zélé peut provoquer un phénomène appelé météorisation code. Cela signifie trop aller chercher dans la mémoire virtuelle, ce qui peut ralentir les performances.

2 Mettez le mot-clé inline avant la déclaration de la fonction et la définition pour désigner qu'il est en ligne:

inline void Func (int); // déclaration

inline void Func (int num) {

// 3 lignes de code

}

3 Inline la fonction de membre d'une classe C ++ en écrivant le code de la fonction dans le corps de la classe. Ceci est une autre façon de dire que le compilateur inline cette fonction, mais il doit être un membre d'une classe C ++:

Complexe de classe {

public:

int Init () {

// 3 lignes de code

}

4 Trouver des alternatives à l'aide de la macro définir, qui est une alternative à une fonction en ligne. La macro permet de définir le préprocesseur à inline-expand une fonction. Les macros sont dangereux, car ils ne font pas la vérification du type:

définir avoidIfPoss (i) ((i)> = 0 (i): - (i))

Conseils et avertissements

  • Ce tutoriel applique également à la programmation C.
  • Si vous souhaitez définir une fonction membre en ligne en utilisant le mot-clé, mettre le mot-clé à côté de la définition en dehors du corps de la classe, pas à côté de la déclaration à l'intérieur de la classe.
  • Si votre système dispose de 100 fonctions, définies chacune par 10 octets de code exécutable, et vous appeler chaque fonction dans 100 endroits dans votre programme, cela augmentera votre exécutable par 100.000 octets.
  • Fonction inline pourrait augmenter le nombre de défauts de cache. Une boucle peut accéder à de nombreuses lignes de mémoire cache, ce qui pourrait faire en sorte que la mémoire cache à thrash.