1. Qu’est-ce que #define ?
#defineest une directive du préprocesseur C.- Elle sert à définir des constantes ou des macros avant la compilation.
- Le préprocesseur remplace toutes les occurrences du nom défini par la valeur correspondante dans le code.
Syntaxe basique
#define NOM valeur
NOMest le nom que tu choisis (souvent en majuscules pour les constantes).valeurpeut être un nombre, un texte, une expression, voire du code.
Exemple simple : constantes
#define PI 3.14159
#define MAX 100
#define ON 1
#define OFF 0
Formules à substituer
#define SQUARE(x) ((x) * (x))
exemple d’utilisation:
int a = 5;
int b = SQUARE(a); // équivaut à 5*5 = 25
Exemple complet
#include <stdio.h>
#define ON 1
#define OFF 0
#define SQUARE(x) ((x) * (x))
int main() {
int etat = ON;
if (etat == ON) {
printf("Allumé\n");
} else {
printf("Éteint\n");
}
int val = 4;
printf("Carré de %d = %d\n", val, SQUARE(val));
return 0;
}
Résumé rapide
| Élément | Rôle | Exemple |
|---|---|---|
#define | Remplacement texte | #define PI 3.14 |
| Constante | Valeur fixe | #define MAX 100 |
| Macro fonction | Macro avec paramètres | #define MUL(x,y) ((x)*(y)) |
Pré compilateur
#include <stdio.h>
#define PI 3.14
int main() {
printf("Pi = %f\n", PI);
return 0;
}
on voit la substitution
etudiant@ordi:~/Works/TP3_C/precomp$ vi precomp.c
etudiant@ordi:~/Works/TP3_C/precomp$ gcc precomp.c -E
# 0 "precomp.c"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "precomp.c"
nclude <stdio.h>
int main() {
printf("Pi = %f\n", 3.14);
return 0;
}
etudiant@ordi:~/Works/TP3_C/precomp$
autre façon d’arrêter à la précompilation
etudiant@ordi:~/Works/TP3_C/precomp$ gcc -E precomp.c -o precomp.i
etudiant@ordi:~/Works/TP3_C/precomp$ cat precomp.i
# 0 "precomp.c"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "precomp.c"
nclude <stdio.h>
int main() {
printf("Pi = %f\n", 3.14);
return 0;
}
etudiant@ordi:~/Works/TP3_C/precomp$
