2010-11-11 8 views

Répondre

4

Le typedef définit P comme pointeur de fonction type. La deuxième version définit P comme un pointeur de fonction.

Un type peut être utilisé pour déclarer des variables. Après

typedef int (*P)(char *(*)()); 

vous pouvez utiliser

P p; 

qui sera équivalent à

int (*p)(char *(*)()); 
9

Le premier déclare un de type appelé P que vous pouvez utiliser dans la déclaration d'autres variables. Le second déclare une variable de même type.

À titre d'illustration:

typedef int (*P)(char *(*)()); 

int main() { 
    int (*Q)(char *(*)()); 
    P R; 
} 

Dans cet exemple, les variables Q et R ont exactement le même type.

+1

Vous êtes sur le feu mate! 945 rep en 4 jours! +1 – alex

+0

Haha, merci. Ouais ... Je devrais probablement, tu sais, sortir bientôt pour de l'air frais. – cdhowie

+0

Cet air frais est surfaite: D – alex

1

La réponse simple serait que vous créez un nouveau type de données via typedef.

Prenons un exemple simple, dans le système embarqué, nous n'utilisons que des nombres non signés. Maintenant 1 voie est que j'écris

unsigned int xyz; 

Donc ici, je dois UNSIGNED partout .. Et si j'oublie de taper quelque part non signé, il est très difficile de comprendre que si le code est libéré. La manière la plus simple serait

typedef unsigned int uint; 

Vous pouvez maintenant utiliser uint comme type de données. Donc, à chaque fois que l'analyseur rencontre uint, il le lit comme non signé int. Par conséquent, dans votre cas, vous pouvez utiliser P comme type de données dans le code. Donc, comme dans le premier exemple

P xyz ; 

serait analysé comme

int (*xyz)(char *(*)()); 
Questions connexes