C Programmation

Macro en langage C

Macro en langage C
Une macro en langage C est un morceau de code qui a reçu un nom. Lorsque le nom est utilisé n'importe où dans le programme, la valeur de la macro est remplacée avant la compilation du programme. Dans cet article, nous allons voir en détail comment écrire une macro en langage C.

Considérez le code suivant :

DÉMARRER
ENTIER n=5 ;
PRINT("La valeur de n est %d",n);
FINIR

Le code ci-dessus n'est pas un code C valide.

Mais le code suivant est valide :

//Exemple 1.c
#define START int main()
#définir FIN
#define INTEGER entier
#define IMPRIMER(A,B) printf(A,B)
DÉMARRER
ENTIER n=5 ;
PRINT("La valeur de n est %d",n);
FINIR

Avant la compilation, les macros START, INTEGER, PRINT et END ont été remplacées par leur valeur, et le code devient un code C valide. Nous pouvons vérifier à l'aide de la commande suivante :

gcc -E Exemple1.c

Cette commande s'affichera après avoir développé toutes les macros.

Maintenant, nous allons voir différents types de macros :

1. Macros de type objet :

Syntaxe:

#define macro_name macro_value

Si la macro prend plus d'une ligne, nous pouvons procéder comme suit :

#define macro_name macro_value1 \
valeur_macro2 \
valeur_macro3
#définir MAX 200

Cette macro ressemble à un objet de données, c'est pourquoi ce type de macro est appelé macro de type objet.

//Exemple2.c
//#inclure
#définir MAX 200
int main()

printf("La valeur MAX est : %d",MAX);
renvoie 0 ;

Dans Exemple2.c, MAX est une macro. A partir de la sortie, on constate que MAXIMUM est remplacé par sa valeur 200.

2. Macros de type fonction :

Syntaxe:

#define macro_name() macro_value

nom_macro est un nom défini par l'utilisateur de la macro. Paire de parenthèses a mettre après le nom_macro. Aucun espace n'est autorisé entre nom_macro et parenthèse. On peut aussi passer des arguments dans ce type de macros.

#define ajouter(x,y) x+y

Cette macro ressemble à un appel de fonction, c'est pourquoi ce type de macro est appelé macro de type fonction.

//Exemple3.c
#define ajouter(x,y) x+y
int main()

int un;
flotteur b;
a = ajouter(4,5);
b = ajouter(2.5,3.6)
renvoie 0 ;

Dans l'exemple3.c, nous avons vu que contrairement à la fonction de C, la macro ne remplace que le code par des arguments sans le calculer. Ainsi, nous pouvons transmettre différents types de données en utilisant la même macro.

Si nous mettons un espace entre le nom de la macro et la parenthèse, cela fonctionne de la même manière qu'une macro de type objet. L'exemple ci-dessous C illustre cela.

//Exemple4.c
#define ajouter (x,y) x+y
int main()

int un;
flotteur b;
a = ajouter(4,5);
b = ajouter(2.5,3.6)

Dans l'exemple4.c, nous avons vu que la macro add est remplacée par (x,y) x+y . Identique à une macro de type objet.

3. Macro pour le collage de jetons :
En langage C, l'opérateur ## est utilisé pour le collage de jetons. En utilisant cet opérateur, nous pouvons combiner deux jetons valides en un jeton valide.
Exemple:

//Exemple5.c
#définir MARGE(x,y) x##y
int main()

nombre entier = MARGE(52,34);
renvoie 0 ;

Si nous essayons de coller un jeton qui ne génère pas de jeton valide, le compilateur C renvoie une erreur ou un avertissement.

//Exemple6.c
#définir MARGE(x,y) x##y
int main()

nombre entier = MARGE(52,+);
renvoie 0 ;

Dans Exemple6.c, nous avons un message d'erreur car, après une combinaison de deux jetons, nous obtenons un jeton invalide '52+'.

4. Macro pour le cordage :
En langage C, l'opérateur # est utilisé pour convertir un paramètre de macro en une constante de chaîne. Lorsqu'un opérateur # précède un paramètre de macro, le paramètre est converti en un littéral de chaîne. La chaîne peut être utilisée pour les macros de type objet et fonction.
Exemple:

//Exemple7.c
#define STRINGIZING(x) #x
int main()

printf(STRINGIZING(Bonjour tout le monde) );
renvoie 0 ;

Dans Exemple7.c nous avons une chaîne "Hello World" en utilisant la macro STRINGIZING.

Conclusion:

Cet article a appris sur tous les types de macro-like Macros de type objet, Macros de type fonction, Macro pour le collage de jetons, Macro pour le cordage et macro pour le cordage en langage C. Maintenant, nous pouvons utiliser une macro dans notre programme C sans aucun doute.

Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...
Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...