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 b
como una variable de tipo a
? ¿O una llamada a funcionar a
con 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.