Différence entre Inline et Macro en C ++
Contenu
Macro est une instruction qui s’agrandit au moment de son invocation. Les fonctions peuvent également être définies, comme les macros. De même, les fonctions en ligne se développent également au moment de son invocation. Une différence principale entre les fonctions inline et macro est que le fonctions en ligne sont élargis pendant compilation, et le les macros sont étendus lorsque le programme est traité par le pré-processeur.
Etudions la différence entre inline et macro à l’aide du tableau de comparaison.
- Tableau de comparaison
- Définition
- Différences Clés
- Conclusion
Tableau de comparaison
Base de comparaison | En ligne | Macro |
---|---|---|
De base | Les fonctions en ligne sont analysées par le compilateur. | Les macros sont développées par le préprocesseur. |
Syntaxe | type de retour en ligne funct_name (paramètres) {. . . } | #define macro_name char_sequence |
Mots-clés utilisés | en ligne | #définir |
Défini | Il peut être défini à l'intérieur ou à l'extérieur de la classe. | Il est toujours défini au début du programme. |
Évaluation | Il n'évalue l'argument qu'une seule fois. | Il évalue l'argument chaque fois qu'il est utilisé dans le code. |
Expansion | Le compilateur ne peut pas en ligne et développer toutes les fonctions. | Les macros sont toujours développées. |
Automatisation | Les fonctions courtes, définies dans la classe, sont automatiquement converties en fonctions inline. | Les macros doivent être définies spécifiquement. |
Accéder à | Une fonction membre en ligne peut accéder aux données membres de la classe. | Les macros ne peuvent jamais être les membres de la classe et ne peuvent pas accéder aux données membres de la classe. |
Résiliation | La définition de la fonction inline se termine par les accolades situées à la fin de la fonction inline. | La définition de macro se termine par la nouvelle ligne. |
Débogage | Le débogage est facile pour une fonction en ligne car la vérification des erreurs est effectuée lors de la compilation. | Le débogage devient difficile pour les macros car la vérification des erreurs ne se produit pas lors de la compilation. |
Contraignant | Une fonction en ligne lie très bien toutes les instructions du corps de la fonction, car le corps de la fonction commence et se termine par les accolades. | Une macro est confrontée au problème de la liaison si elle comporte plusieurs instructions, car elle ne comporte pas de symbole de terminaison. |
Définition de Inline
Une fonction en ligne ressemble à une fonction normale, mais est précédée du mot clé «en ligne“. Les fonctions en ligne sont des fonctions de longueur courte qui sont développées au moment de son invocation, au lieu d'être appelées. Apprenons à comprendre les fonctions en ligne avec un exemple.
#comprendre Dans le programme ci-dessus, j'ai déclaré et défini la fonction initialize (), en tant que fonction inline dans la classe «exemple». Le code de la fonction initialization () se développera là où il est appelé par l'objet de la classe «exemple». La fonction display (), définie dans l'exemple de classe, n'est pas déclarée inline mais elle peut être considérée inline par le compilateur, comme en C ++, les fonctions définies dans la classe sont automatiquement définies en ligne par le compilateur en fonction de la longueur de la fonction. Macro est une «directive préprocesseurs». Avant la compilation, le programme est examiné par le préprocesseur et, s’il trouve la macro dans le programme, il remplace cette macro par sa définition. Par conséquent, la macro est considérée comme le «remplacement». Laissez-nous étudier la macro avec un exemple. #comprendre Dans le code ci-dessus, j'ai déclaré une fonction macro GREATER (), qui compare et trouve le plus grand nombre des deux paramètres. Vous pouvez constater qu'il n'y a pas de point-virgule pour terminer la macro car celle-ci n'est terminée que par la nouvelle ligne. Comme une macro est juste un remplacement, elle développera le code de la macro où elle est invoquée. Les fonctions en ligne sont beaucoup plus convaincantes que la fonction macro. C ++ fournit également un meilleur moyen de définir une constante, qui utilise un mot clé «const».
Définition de macro
Conclusions: