Il arrive que lon utilise des types un peu complexes en C++. Par exemple lécriture :
unsigned long *p[3][5];
est assez peu claire, et de surcroît assez longue à écrire. Voici comment on peut éclaircir cet embrouillamini :
typedef unsigned long ulong; typedef ulong* ulongptr; ulongptr p[3][5];
On a défini deux nouveaux types, ulong identique à unsigned long
et ulongptr identique à ulong*
. La déclaration de p met alors en relief le fait quil sagit dun tableau de pointeurs, et non dun pointeur sur un tableau comme la première écriture pouvait donner à croire. Dans tout le reste du programme, on pourra écrire partout ulong à la place de unsigned long
, ce qui est bien agréable.
Les clauses typedef
sont donc essentiellement des raccourcis décriture, mais qui aident beaucoup à lire les programmes. Elles permettent déviter de nombreuses erreurs.
En outre, la définition de types permet de mettre en valeur certaines variables, du point de vue fonctionnel. Par exemple, les arguments entiers des fonctions malloc
, realloc
, etc., sont du type size_t
défini ainsi :
typedef unsigned size_t;
ce qui signifie que size_t
est équivalent à unsigned int
, mais permet de mettre en valeur ces arguments en montrant quils désignent une taille mémoire, et non quelque chose dautre.
Les définitions de types sont aussi spécialement utiles avec les pointeurs de fonction (voir chapitre 5).
Il ne faut pas exagérer non plus : un nombre trop élevé de déclarations de types, surtout avec des noms mal choisis, finirait par nuire à la lisibilité, ce qui est le contraire du but recherché.
Précédent | Sommaire | Suivant |