En uno de mis archivos fuente del proyecto, encontré esta definición de función C:
int (foo) (int *bar)
{
return foo (bar);
}
Nota: no hay un asterisco al lado foo, por lo que no es un puntero de función. ¿O es eso? ¿Qué está pasando aquí con la llamada recursiva?
a(b);? Declaración de bcomo una variable de tipo a? ¿O una llamada a funcionar acon argumento b? La diferencia es sintáctica, y no puede saber de qué manera analizarla sin buscar la información de declaración de a; es decir, esos paréntesis de llamada de función postfix, o paréntesis opcionales alrededor de un declarador.