Maison  >  Article  >  développement back-end  >  Comment définir la définition d'une macro en langage C

Comment définir la définition d'une macro en langage C

anonymity
anonymityoriginal
2019-05-05 10:19:4729682parcourir

Définition de macro est une directive de prétraitement couramment utilisée, qui utilise "identifiant" pour représenter le contenu de la "liste de remplacement". L'identifiant est appelé nom de macro. Au cours du processus de prétraitement, le préprocesseur remplacera tous les noms de macro du programme source par le contenu de la liste de remplacement dans la définition de la macro.

Comment définir la définition d'une macro en langage C

Il existe deux définitions de macro courantes, les définitions de macro sans paramètres et les définitions de macro avec paramètres.

Les définitions de macros peuvent nous aider à éviter les erreurs, à améliorer la portabilité et la lisibilité du code, etc.
Dans le processus de développement de logiciels, il existe souvent des fonctions ou des segments de code couramment utilisés ou communs. Ces fonctions peuvent être écrites sous forme de fonctions ou encapsulées dans des définitions de macro. Alors, vaut-il mieux utiliser des fonctions ou des définitions de macros ? Cela nous oblige à faire un choix raisonnable entre les deux.
Regardons un exemple pour comparer deux nombres ou expressions. Nous l'écrivons d'abord sous forme de définition de macro :

  #define MAX( a, b) ( (a) > (b) (a) : (b) )  
  # 其次,把它用函数来实现:
  int max( int a, int b)
  {
  return (a > b a : b)
  }

Évidemment, nous ne choisirons pas d'utiliser une fonction pour accomplir cette tâche. Il y a deux raisons : premièrement, l'appel de fonction entraînera une surcharge supplémentaire. Il doit ouvrir un espace de pile, enregistrer l'adresse de retour, placer les paramètres formels sur la pile et libérer la pile au retour de la fonction. Cette surcharge réduira non seulement l'efficacité du code, mais augmentera également considérablement la quantité de code. L'utilisation de définitions de macro est supérieure aux fonctions en termes de taille et de vitesse de code. Deuxièmement, les paramètres de la fonction doivent être déclarés comme un type spécifique. Il ne peut donc être utilisé que sur des expressions du type approprié. Si nous voulons comparer les tailles de deux types à virgule flottante, nous devons écrire une fonction de comparaison spécifiquement pour les types à virgule flottante. Au contraire, la définition de macro ci-dessus peut être utilisée pour les entiers, les entiers longs, les types à virgule flottante simple, les types à virgule flottante double et tout autre type pouvant utiliser l'opérateur ">" pour comparer la taille des valeurs. , la macro est indépendante du type de.
Par rapport à l'utilisation de fonctions, l'inconvénient de l'utilisation de macros est qu'à chaque fois qu'une macro est utilisée, une copie du code de définition de la macro sera insérée dans le programme. À moins que la macro ne soit très courte, son utilisation peut augmenter considérablement la longueur de votre programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn