« Programmation C/Préprocesseur » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 71 :
 
En fait dès qu'une macro est composée d'autre chose qu'un élément atomique (un lexème, ou un ''token'') il est bon de le mettre entre parenthèses, notamment les arguments qui peuvent être des expressions utilisant des opérateurs ayant des priorités arbitraires.
 
Il est a noter que l'emploi systématique de parenthèses ne protège pas contre tous les effets de bord. En effet :
<pre>
MAX(x++,y); /* Sera remplacé par : ((x++) > (y) ? (x++) : (y)) */
</pre>
 
Du coup, x est incrémenté de 2 et non pas de 1.
La qualité et la performance des compilateurs C modernes fait que l'utilisation de fonctions [[Programmation C Fonctions et procédures#Fonction inline|inline]] est le plus souvent préférable.
 
== Suppression d'une définition ==