7 - Compilation et modularisation

CHAPITRE 7 : compilation et modularisation #

Cours #

Quiz #

QUIZ SUR LA COMPILATION

Défis #

MACROS #

Que fait le programme suivant ? Pourquoi ? Que faut-il modifier pour qu’il fonctionne correctement ?

#include <stdio.h>

#define SQUARE(x) x * x

int main(void)
{
  int a = 5;
  int b = SQUARE(a + 1);
  printf("b = %d\n", b);
  
  return 0 ;
}
Explications

L’utilisation de macros peut entraîner des comportements inattendus en raison de l’expansion de texte. Dans cet exemple, l’expression SQUARE(a + 1) sera développée en a + 1 * a + 1, ce qui ne donne pas le résultat attendu. Pour corriger cela, il faut ajouter des parenthèses autour des arguments de la macro :

#define SQUARE(x) ((x) * (x))

Avec cette modification, l’appel SQUARE(a + 1) sera correctement évalué comme (a + 1) * (a + 1).

LAST MODIFIED
November 03, 2025
Benoit Le Callennec
9077778

© HE-Arc 2020-2025 - Tous droits réservés.