J'ai relu une bonne dizaines de fois, et j'ai à peu près tout compris ! Merci beaucoup.
Cependant, il y a encore des choses qui m'échappent. Tu dis « Tu poses (éventuellement) un identifiant »
Ne pas mettre l'identifiant sert à donner le type de retours d'une fonction par exemple ?
dans l'exemple
intf(int)(void);
on peut dire que le retour de f est de type int (void) ? Par exemple, imaginons une fonction qui retourne un pointeur vers une fonction int (g)(void) mais sous forme d'un pointeur (void *) comme le ferait un thread par exemple, il est possible de caster ce pointeur avec ( int ()(void) ) ?
Pour ma question, sur la représentation en mémoire du tableau. Si je compile ce bout de code
typedefdoublef1(int,int);typedefvoidf2(void);typedefint(*f3)(int);typedefvoid(*f4)(void);voidmain(void){printf("taille pointeurs sur fonctions = %d,%d fonctions = %d,%d\n",sizeof(f3),sizeof(f4),sizeof(f1),sizeof(f2));}
Je trouve que les pointeurs vers des fonctions font 4 octets (quelle qu'elles soient), et que les fonctions n'en font qu'un (d'ailleurs, on est limité à 256 types de fonctions ?) j'ai l'impression d'être complètement à coté de la plaque. Je crois qu'il faut vraiment que j'apprenne des bases d'assembleur.
[^] # Re: Parsing en C
Posté par Zylabon . En réponse au message L'opérateur unaire * me laisse perplexe (pointeurs sur fonctions principalement). Évalué à 0.
J'ai relu une bonne dizaines de fois, et j'ai à peu près tout compris ! Merci beaucoup.
Cependant, il y a encore des choses qui m'échappent. Tu dis « Tu poses (éventuellement) un identifiant »
Ne pas mettre l'identifiant sert à donner le type de retours d'une fonction par exemple ?
dans l'exemple
on peut dire que le retour de f est de type int (void) ? Par exemple, imaginons une fonction qui retourne un pointeur vers une fonction int (g)(void) mais sous forme d'un pointeur (void *) comme le ferait un thread par exemple, il est possible de caster ce pointeur avec ( int ()(void) ) ?
Pour ma question, sur la représentation en mémoire du tableau. Si je compile ce bout de code
Je trouve que les pointeurs vers des fonctions font 4 octets (quelle qu'elles soient), et que les fonctions n'en font qu'un (d'ailleurs, on est limité à 256 types de fonctions ?) j'ai l'impression d'être complètement à coté de la plaque. Je crois qu'il faut vraiment que j'apprenne des bases d'assembleur.
Please do not feed the trolls