typedef int (*P)(char *(*)());
int (*P)(char *(*)());
Les deux semblent me faire la même chose, à quoi sert le typedef
?Quelle est la différence entre ces 2 déclarations en c?
typedef int (*P)(char *(*)());
int (*P)(char *(*)());
Les deux semblent me faire la même chose, à quoi sert le typedef
?Quelle est la différence entre ces 2 déclarations en c?
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 *(*)());
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.
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 *(*)());
Vous êtes sur le feu mate! 945 rep en 4 jours! +1 – alex
Haha, merci. Ouais ... Je devrais probablement, tu sais, sortir bientôt pour de l'air frais. – cdhowie
Cet air frais est surfaite: D – alex