next up previous contents index
suivant: Exécution des fonctions définies monter: main précédent: Arguments fonctionnels   Table des matières   Index


Abréviations de type

L'instruction typedef, qui déclare un nom comme l'abréviation d'un type, est généralement employée pour désigner par un nom un type dont l'expression est complexe, par exemple un type fonctionnel, un type de tableaux ou de pointeurs. L'abréviation


typedef double (*fun)(double);

fait du nom fun une abréviation du type des fonctions

\begin{displaymath}
\texttt{double} \to \texttt{double}.
\end{displaymath}

Cette abréviation, où le * sera expliqué ultérieurement, est utilisable, par exemple pour déclarer le type d'un paramètre d'une fonction :


double newton(fun f, fun fprime, int n, double x0);

qui est plus concis que la déclaration précédente de cette fonction. De la même façon, l'abréviation rel du type des relations binaires sur les double s'exprime par :


typedef bool (*rel)(double, double);

Une autre utilisation significative de typedef consiste à paramétrer un programme par un nom de type. Cela permet de pallier partiellement l'absence de possibilités de typage générique en C (mais C++ dispose des templates pour la programmation générique). On écrira en tête du fichier :


typedef int data;

La syntaxe de ces abréviations est assez déroutante : on procède comme si l'on définissait une variable, le nom du type introduit étant à la place du nom de variable, et le tout est précédé de typedef.

Le reste du programme n'utilisant que data, il suffira, le cas échéant, de remplacer cette définition de data par une autre, sans devoir modifier autre chose (sous réserve que les opérations sur les data aient toujours un sens pour autre chose que des int). Contrairement à ce que le mot typedef laisserait croire, il ne s'agit pas de la définition d'un nouveau type : int et data sont le même type, avec les mêmes valeurs, et on pourra sans problème additionner un int et un data. D'autres mécanismes permettront de définir des nouveaux types afin de distinguer leurs valeurs.


next up previous contents index
suivant: Exécution des fonctions définies monter: main précédent: Arguments fonctionnels   Table des matières   Index
R Lalement