typedef int (xxx)(int yyy);
oznacza zdefiniowanie funkcji o nazwie xxx z parametrem liczby całkowitej. możesz zobaczyć ten SO post po więcej szczegółów.Funkcja typedef jako parametr innej funkcji
Próbowałem to na różne sposoby, to jest mój kod:
#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));
}
wyjściowa:
f1:4199274
f1:2
f2:4199274
f2:2
xxx's size:1
Moje pytanie:
f(xxx a)
jest taka sama jakf(xxx *a)
?sizeof(someFunction)
jest zdefiniowany czy nie?
Jeśli chodzi o (2), zarówno 'sizeof (function)' jak i 'sizeof (function-type)' są nieprawidłowe. C. Jednakże 'sizeof (function-ptr-type)' jest idealnie w porządku. Musiałbym sprawdzić standard, aby potwierdzić moje podejrzenia dotyczące (1) przed komentarzem dalej. – WhozCraig