Le prototype pour définir une fonction qui renvoie un pointeur ressemble à ceci:Dans les règles de syntaxe, qu'est-ce qui rend les prototypes de fonctions qui retournent les pointeurs et les pointeurs de fonction différents?
int * function_name();
En même temps, le prototype d'un pointeur de fonction ressemble à ceci:
int (*function_name)();
Quelles règles de syntaxe rend les deux définitions différentes? Comment la préséance entre-t-elle en jeu?
Par exemple, est
(int *) function_name();
un prototype pour une fonction qui renvoie un pointeur ou une fonction de pointeur? (Mon intuition est qu'elle définit une fonction qui retourne (int *)
, et donc est la première.)
Éditer: J'ai réalisé que ma question concerne réellement les déclarations C. Une bonne ressource pour comprendre celles-ci est http://unixwiz.net/techtips/reading-cdecl.html
La syntaxe de C n'est clairement pas parfaite. – Stargateur
Essayez une fonction qui renvoie un pointeur de fonction. – DeiDei
Désambiguïsation est une mauvaise affaire, mais il doit être fait. Heureusement, nous pouvons utiliser typedefs pour alléger la maladresse. – StoryTeller