【发布时间】:2013-08-27 04:13:41
【问题描述】:
typedef int (xxx)(int yyy); 表示定义一个名为 xxx 且带有整数参数的函数。详情请见SO post。
我以不同的方式尝试过,这就是我的代码:
#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));
}
输出:
f1:4199274
f1:2
f2:4199274
f2:2
xxx's size:1
我的问题:
-
f(xxx a)和f(xxx *a)一样吗? -
sizeof(someFunction)是否已定义?
【问题讨论】:
-
关于 (2),
sizeof(function)和sizeof(function-type)都无效是 C。但是,sizeof(function-ptr-type)完全没问题。在进一步评论之前,我必须检查标准以确认我对 (1) 的怀疑。