In uno dei miei file sorgente del progetto, ho trovato questa definizione della funzione C:
int (foo) (int *bar)
{
return foo (bar);
}
Nota: non c'è un asterisco accanto foo
, quindi non è un puntatore a funzione. O è? Cosa sta succedendo qui con la chiamata ricorsiva?
a(b);
? Dichiarazione di b
come variabile di tipo a
? O una chiamata per funzionare a
con argomento b
? La differenza è sintattica e non puoi sapere in che modo analizzarla senza cercare le informazioni sulla dichiarazione di a
; vale a dire quelle parentesi di funzione postfissa o parentesi opzionali attorno a un dichiaratore.