typedef int (xxx)(int yyy);
nghĩa là xác định hàm có tên xxx với tham số nguyên. bạn có thể xem số này SO post để biết chi tiết.Hàm typedef làm tham số của hàm khác
Tôi đã thử này theo những cách khác nhau, đó là mã của tôi:
#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));
}
đầu ra:
f1:4199274
f1:2
f2:4199274
f2:2
xxx's size:1
Câu hỏi của tôi:
f(xxx a)
cũng giống nhưf(xxx *a)
?sizeof(someFunction)
được xác định hay không?
Về (2), cả 'sizeof (function)' và 'sizeof (function-type)' không hợp lệ là C. Tuy nhiên, 'sizeof (function-ptr-type)' là hoàn toàn tốt. Tôi phải kiểm tra tiêu chuẩn để xác nhận những nghi ngờ của tôi về (1) trước khi bình luận thêm. – WhozCraig