__line__c ++ macro

__line__c ++ macro
Les préprocesseurs sont les programmes qui ont notre code source avant le début du processus de compilation. Ces préprocesseurs contiennent certaines directives comme #define, #include, etc. Il existe un total de 4 principaux types de directives de préprocesseurs. L'un d'eux est des macros. Les macros contiennent un morceau de code dans un programme qui reçoit un nom spécifique. Lorsque le compilateur rencontre le nom, le compilateur remplace le nom par le code réel / réel. La directive «#define» définit une macro.

La macro est une abréviation qui représente un morceau de code dans un langage de programmation. Ces macros aident à simplifier et à réduire le code pour éviter la redondance et le codage répétitif. De sorte que les erreurs sont également réduites qui se produisent principalement en raison du codage répété. Le principal avantage concernant les macros est qu'il convertit le code et fabrique un programme d'assemblage plus lisible.

Extension de macro

Une macro contient un nom, un ensemble de paramètres formels et le corps de code. Le nom de macro est utilisé avec l'ensemble des paramètres et remplacé par un morceau de code généré par son corps. Cela forme une extension de macro. Cela permet au programmeur de créer et de définir des opérations de pseudo, les opérations qui sont souhaitables et celles qui ne sont pas implémentées comme instructions de processeur. La macro a une qualité spécifique dans laquelle il écrit automatiquement le programme. Le nom macro est écrit comme c'est un mot-clé dans le code. Il agit comme un appel à cette macro spécifique, tout comme un appel de fonction. Alors ce nom est remplacé par un autre code de macro comme nous l'avons décrit ci-dessus. Ce remplacement de l'appel par la copie traitée est l'expansion de l'appel macro. Et il est également utilisé en C et C ++.

Une fois qu'une macro est définie, nous ne pouvons pas le redéfinir à une valeur différente sans supprimer la première définition d'origine. Mais il est possible de redéfinir la macro avec la même définition de macros déjà définies. La directive #UNDEF est chargée de supprimer la définition d'une macro. Une fois la définition supprimée, nous pouvons maintenant redéfinir la macro avec une valeur différente.

Macros en c++

Il existe deux types:

  1. Macros de type objet
  2. Macros de type fonction

Macros de type objet

Les macros de type objet ne prennent aucun argument. Ce sont des identificateurs qui sont remplacés par la valeur. Ceux-ci sont principalement utilisés pour représenter les valeurs et constantes numériques.

#define pl 3.17

Pl est le nom de la macro qui sera remplacé par la valeur 3.17.

Macros de type fonction

Ces types de macros peuvent accepter les arguments. Ces macros ressemblent à un appel de fonction. Par exemple, prenez un exemple où Max est le nom de la macro.

#define max (a, b) ((a)<(b)?(a): (b))

Les macros ne génèrent généralement pas les appels de fonction.En C ++, les fonctions en ligne sont préférables.

Macros prédéfinies

Compilateur Microsoft C / C ++ qui a des macros prédéfinies MSVC qui dépendent du langage C ++, de la cible de la compilation et des options de compilateur. MSVC prend en charge les macros de préprocesseur prédéfinis requis par les normes ANSI / ISO C99. Ces macros prédéfinis n'utilisent aucun argument et ne peuvent pas être redéfinis.

De nombreuses macros prédéfinies peuvent être utilisées dans le code source / programmes C / C ++ C / C ++. Certains d'entre eux sont décrits ici qui sont le plus couramment utilisés.

__Date__
La date de compilation du programme dans le fichier est représentée par cette macro de fonction. La date est une chaîne pour le format par mois et une valeur constante. Ce type de macro est toujours défini.

__Temps__
Il représente le temps de traduction de l'unité qui est prétraité. Semblable à ce jour, il a un format spécifique dans lequel il est écrit des heures: Minutes: secondes, de la même manière que l'heure est retournée.

Ce type de macro est également toujours défini.

__Déposer__
Cela représente le nom du fichier actuel. Il se développe à une chaîne de caractères littérale. Cela garantit que le chemin qui mène au fichier s'affiche. C'est une macro toujours définie.

__Doubler__
Il représente le numéro de ligne dans le format entier d'une source actuelle. Cette macro est définie comme les autres, et sa valeur est modifiée avec l'aide de la #line.

Nous allons maintenant mettre en évidence quelques exemples de la fonction macro __line__c ++.

__Doubler__
Pour avoir une idée du fonctionnement de cette macro, nous avons cité ici un exemple. Premièrement, une bibliothèque pour le flux d'entrée et de sortie est utilisée. Ensuite, nous avons utilisé un journal d'erreur de fonction qui maintient le journal des erreurs. Cela a un paramètre pour accepter la ligne sous la forme d'une chaîne et d'un message. Cette fonction affichera le numéro de ligne avec le message qui est passé du programme principal à la macro.

#define log (msg) errorlog (__line__, msg)

Après cela, nous avons défini une macro. Cela acceptera la chaîne de ligne de message de la fonction principale qui a passé comme argument lorsque cette macro est appelée. Et de même, la fonction de journal d'erreur est appelée avec macro de ligne et le message comme paramètres. Le fichier sera enregistré avec une extension du .C Fichier de code source. Comme nous devons voir les résultats de la plate-forme Linux, accédez au terminal et appliquez les commandes pour compiler et exécuter le fichier. Utilisez un compilateur G ++ pour C++.

$ g ++ -o f f.c
$ ./F

Vous pouvez voir que même avec les espaces, le numéro de ligne est identifié via la macro de ligne. À partir de cet exemple, vous avez vu la fonctionnalité d'une macro __line__. Mais dans l'exemple suivant, toutes les macros sont collectivement dans le programme. Nous avons utilisé «cout» pour imprimer des lignes. Chaque ligne contient une macro différente, et cette valeur est affichée. Par exemple, pour la date que nous avons utilisée:

Std :: cout << ("Date :%s\n" , __Date) << std ::endl;

Maintenant, nous verrons la sortie. Vous pouvez voir que le nom de fichier, la date de compilation, l'heure de compilation et le numéro de ligne actuel sont affichés très efficacement via un seul morceau de code pour chaque macro.

Utilisations / avantages des macros

  • Moins d'espace est occupé car il convertit la déclaration de longues variables en courtes.
  • Lorsqu'une macro est utilisée avec un nom qui fournit un sens à la déclaration actuelle, il est plus facile de comprendre la macro que les codes longs.
  • Les macros ne sont pas en mesure de nettoyer ou de retirer la poubelle, etc., par eux-mêmes. Cela dépend du programmeur, et il décide quand la macro est conçue pour quitter et doit être propre afin que le deuxième fichier puisse utiliser facilement la macro.
  • La vitesse d'exécution d'un programme est augmentée, ce qui est un avantage majeur de l'utilisation d'une macro dans le code.

Conclusion

'__line__c ++ macro' est un article écrit pour élaborer les fonctionnalités de base de la macro en décrivant les types et également les macros prédéfinis et favoriser leurs types. Toutes ces fonctions sont expliquées à l'aide d'un exemple. Les macros sont facilement implémentées et nécessitent moins de temps dans la compilation des codes. Ces fonctionnalités sont conçues par les programmeurs qui souhaitent créer des innovations et des conditions en utilisant un petit morceau de code dans le programme Source de base. À cette fin, en fin de compte, l'article s'accompagne des utilisations de la macro dans le code source et décrit comment elles sont bénéfiques à certains aspects.