Dans l’un de mes fichiers de source de projet, j’ai trouvé cette définition de la fonction C :
Remarque : il n’y a aucun astérisque à côté de `` , donc ce n’est pas un pointeur fonction. Ou est-ce ? Ce qui se passe ici avec l’appel récursif ?
Dans l’un de mes fichiers de source de projet, j’ai trouvé cette définition de la fonction C :
Remarque : il n’y a aucun astérisque à côté de `` , donc ce n’est pas un pointeur fonction. Ou est-ce ? Ce qui se passe ici avec l’appel récursif ?
En l'absence de toute préprocesseur choses qui se passent, foo
's la signature est équivalent à
int foo (int *bar)
Le seul contexte dans lequel j'ai vu des gens mettre apparemment inutiles entre parenthèses les noms de fonction, c'est quand il y a à la fois une fonction et une fonction, comme la macro avec le même nom, et le programmeur veut empêcher l'expansion de macro.
Cette pratique peut sembler un peu bizarre au premier abord, mais la bibliothèque C établit un précédent en fournissant des macros et des fonctions avec des noms identiques.
Une telle fonction/macro paire est isdigit()
. La bibliothèque peut la définir comme suit:
/* the macro */
#define isdigit(c) ...
/* the function */
int (isdigit)(int c) /* avoid the macro through the use of parentheses */
{
return isdigit(c); /* use the macro */
}
Votre fonction est presque identique à celle ci-dessus, donc je suppose que c'est ce qui se passe dans votre code.
La parenthèse de ne pas modifier la déclaration, il est encore juste la définition d'une fonction ordinaire appelée foo
.
La raison qu'ils ont été utilisés presque certainement parce que y est une fonction-comme macro appelée foo
défini:
#define foo(x) ...
À l'aide de (foo)
dans la déclaration de fonction empêche cette macro d'être élargi ici. Donc, ce qui est susceptible de se passer est qu'une fonction foo()
est en cours de définition avec son corps étant élargi à partir de la fonction-comme la macro foo
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.