Restriction d'un type de base

Il est parfois nécessaire de manipuler des variables qui ne peuvent prendre comme valeurs qu'un sous-ensemble des valeurs d'un type de base. Supposons que nous voulions manipuler des booléens. Comme le type booléen n'existe pas en C90, il faudra utiliser des int, en se restreignant à deux valeurs, par exemple 0 et 1. Il est alors intéressant de redéfinir à l'aide d'un typedef, le type int. On écrira par exemple :

#define VRAI 1
#define FAUX 0
typedef int BOOLEAN;
On pourra par la suite déclarer des « booléens » de la manière suivante :

BOOLEAN b1,b2;
et les utiliser :

b1 = VRAI;
if (b2 == FAUX) ...
mais bien entendu, ce sera à la charge du programmeur d'assurer que les variables b1 et b2 ne prennent comme valeurs que VRAI ou FAUX. Le compilateur ne protestera pas si on écrit :
b1 = 10;
On voit que la lisibilité du programme aura été augmentée, dans la mesure où le programmeur aura pu expliciter une restriction sémantique apportée au type int.



Matthieu Moy 2017-02-08