Bonjour,
Les déclarations en C ne sont pas (toutes) faciles à lire :
Comment traduire ?. Existe-t-il une méthode à appliquer ?.
Code : Sélectionner tout - Visualiser dans une fenêtre à part char*(*(*x)(void))[];
Merci
Bonjour,
Les déclarations en C ne sont pas (toutes) faciles à lire :
Comment traduire ?. Existe-t-il une méthode à appliquer ?.
Code : Sélectionner tout - Visualiser dans une fenêtre à part char*(*(*x)(void))[];
Merci
Voir la reponse a la question 1.21 de la FAQ c.l.c.. cdecl est un outil assez pratique. Pour reprendre ton exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 cdecl> explain char*(*(*x)(void))[]; declare x as pointer to function (void) returning pointer to array of pointer to char
Tu doit connaitre l'ordre de priorité des opérateurs
http://www.difranco.net/cop2220/op-prec.htm
Voir les parenthèses qui servent a modifier cette ordre et celles qui sont utilisé pour indiquer une fonction et ses paramètres.
Il faut "débobiner" la déclaration :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 char*(*(*x)(void))[] signifie que *(*(*x)(void))[] est un char signifie que (*(*x)(void))[] est un pointeur sur char signifie que (*(*x)(void)) est un tableau de pointeurs sur char signifie que *(*x)(void) est un tableau de pointeurs sur char signifie que (*x)(void) est un pointeur sur un tableau de pointeurs sur char signifie que (*x) est une fonction (ne prenant pas d'arument) retournant un pointeur sur un tableau de pointeurs sur char signifie que *x est une fonction (ne prenant pas d'arument)retournant un pointeur sur un tableau de pointeurs sur char signifie que x est un pointeur sur une fonction (ne prenant pas d'argument)retournant un pointeur sur un tableau de pointeurs sur char x est un pointeur sur une fonction (ne prenant pas d'argument)retournant un pointeur sur un tableau de pointeurs sur char
Partager