Quelle est la différence entre une macro et une fonction dansC? S'il vous plaît dites-moi une application où je peux utiliser des macros et des fonctions?
Avantages
Désavantages
La différence fondamentale est que la fonction est compilée et que la macro est prétraitée. Lorsque vous utilisez un appel de fonction, il sera traduit en ASM CALL avec toutes ces opérations de pile pour transmettre des paramètres et des valeurs. Lorsque vous utilisez un MACRO, le préprocesseur C traduira toutes les chaînes à l’aide de macros et de les compiler.
Moins d'utiliser des macros, c'est qu'ils cachent la mise en œuvre. Il est plus difficile de trouver un bug si vous en avez un.
En C (et C++), une macro est une directive de préprocesseur. Cela signifie qu'avant que votre programme ne commence à compiler, toutes les macros seront traitées. Les macros sont utiles car
Disdvatages
Exemple
#define INCREMENT(x) x++
Une fonction est un morceau de code qui peut être exécuté de manière relativement indépendante et effectue une tâche spécifique. Vous pouvez y voir une sorte de fonction mathématique: une fonction à partir d'un ensemble d'entrées donnera une sortie particulière. En C, ceux-ci sont définis comme
<return type> <name>(<parameters>)
{
//code body
}
Et une autre différence est que dans la fonction il y a un overhead de pile, mais dans le cas de macros il n’y en a pas; c'est juste l'expansion du code.
Vous devez penser la macro comme un remplacement de texte: c'est comme si vous insériez le code de la macro à chaque fois que vous la voyez dans votre code. Cela est utile pour les "extraits de code", car vous évitez la surcharge d'appel de la fonction, car chaque fois que vous appelez une fonction, vous déployez des efforts pour placer des paramètres dans la pile.