Dans l'un de mes fichiers source de projet, j'ai trouvé cette définition de fonction C:
int (foo) (int *bar)
{
return foo (bar);
}
Remarque: il n'y a pas d'astérisque à côté foo
, donc ce n'est pas un pointeur de fonction. Ou est-ce? Que se passe-t-il ici avec l'appel récursif?
a(b);
? Déclaration de b
comme variable de type a
? Ou un appel à la fonction a
avec argument b
? La différence est syntaxique, et vous ne pouvez pas savoir de quelle manière même l'analyser sans rechercher les informations de déclaration de a
; c'est-à-dire sont ces parenthèses d'appel de fonction postfix, ou des parenthèses facultatives autour d'un déclarant.