Directives de compilation : #define

  • La directive #define permet de remplacer dans le programme toutes les occurrences d'un nom par une suite de caractères.

  • Cette possibilité permet :

    • une meilleure lisibilité du programme source,

    • évite de devoir réécrire à chaque fois une suite longue de caractères souvent utilisés au cours du programme source

    • de définir des constantes pour le programme.

DéfinitionSyntaxe

1
#define NomDeSubstitution Valeur

Exemple

1
#define VRAI 1

Le nom VRAI sera utilisé en remplacement du chiffre 1 dans le programme source.

1
int resultat; //resultat est une variable
2
resultat = VRAI;//resultat contient maintenant la valeur 1
3
resultat = VRAI + VRAI;//resultat contient maintenant la valeur 2

ExempleUn exemple un peu extrême...

1
#define max(a,b) if(a > b) \
2
printf("a est plus grand que b : %d > %d",a,b); \
3
else printf("b est plus grand que a : %d > %d",b,a);
  • Le nom max(a,b) sera utilisé en remplacement de la séquence de programme.

  • Le caractère \ indique que le texte qui se trouve à la ligne suivante fait partie de la suite de caractères.

1
#include <stdio.h>
2
#define max(a,b) if(a > b) \
3
printf("a est plus grand que b : %d > %d",a,b); \
4
else printf("b est plus grand que a : %d > %d",b,a);
5
int a,b;
6
int main(){
7
    a = 20;
8
    b = 0;
9
    max(a,b);
10
    return 0;
11
}

Vous pouvez tester cet exemple en ligne sur OnlineGBD ou sur Jdoodle