(En supposant ici que vous parlez à propos de C/C++.)
Une fonction inline a son code copié dans les points où il s'appelle, tout comme une macro le ferait. La principale raison pour laquelle vous utiliseriez des fonctions en ligne plutôt que des macros pour accomplir ceci est que le langage macro est beaucoup plus faible que le code C/C++ actuel; Il est plus difficile d'écrire des macros compréhensibles, réutilisables et non buggées. Une macro ne crée pas de portée lexicale, de sorte que les variables de l'une peuvent entrer en conflit avec celles qui sont déjà dans la portée où elles sont utilisées. Il ne vérifie pas ses arguments. Il est facile d'introduire des erreurs syntaxiques inattendues, puisque tout ce que fait une macro est essentiellement la recherche et le remplacement.
En outre, IIRC, le compilateur peut choisir d'ignorer une directive inline s'il pense que c'est vraiment boneheaded; ça ne peut pas faire ça avec une macro. Ou, pour reformuler cela d'une manière plus opiniâtre et plus courte: les macros (en C/C++, pas, disons, les dialectes Lisp) sont un horrible kludge, les fonctions inline ne permettent pas de les utiliser. En outre, gardez à l'esprit que ce n'est souvent pas une bonne idée de marquer une fonction comme inline. Les compilateurs seront généralement alignés ou non comme ils l'entendent; En marquant une fonction en ligne, vous assumez la responsabilité d'une fonction de bas niveau, la plupart du temps, le compilateur en sait plus que vous.
De quelle langue parlez-vous? VBA? – Eric