typedef int (xxx)(int yyy);
significa definire una funzione denominata xxx con un parametro intero. puoi vedere questo SO post per i dettagli.Una funzione typedef come parametro di un'altra funzione
Ho provato questo in modi diversi, che è il mio codice:
#include<stdio.h>
#include<stdlib.h>
typedef int (xxx)(int yyy);
void f1(xxx a)
{
printf("f1:%d\n",a);
}
void f2(xxx *a)
{
printf("f2:%d\n",a);
}
int test(int y)
{
}
int main()
{
xxx *a;
f1(test);
f1(a);
f2(test);
f2(a);
xxx b;
printf("xxx's size:%d\n", sizeof(b));
}
uscita:
f1:4199274
f1:2
f2:4199274
f2:2
xxx's size:1
La mia domanda:
f(xxx a)
è lo stesso dif(xxx *a)
?sizeof(someFunction)
è definito o no?
Riguardo a (2), sia 'sizeof (funzione)' che 'sizeof (funzione-tipo)' non sono validi è C. Tuttavia, 'sizeof (function-ptr-type)' è perfettamente a posto. Dovrei controllare lo standard per confermare i miei sospetti su (1) prima di commentare ulteriormente. – WhozCraig