我希望这样:
typedef void (*TYPE)(TYPE);
void F(TYPE x){
}
但是这会在typedef报错,说第二个TYPE未定义。
我该怎么做,才能让F的参数类型与F本身的类型相同?
我希望这样:
typedef void (*TYPE)(TYPE);
void F(TYPE x){
}
但是这会在typedef报错,说第二个TYPE未定义。
我该怎么做,才能让F的参数类型与F本身的类型相同?
你这个逻辑上不通啊。void F(TYPE x),怎么调用呢?参数是个函数,这个函数参数又是个函数,然后这个函数参数又要求是一个函数
来一段代码,你看看能不能用。不能用TYPE直接定义,但可以用void *替代。
int a = 0;
typedef void (*TYPE)(void* p);
void fun(void* p)
{
a++;
if(p != NULL)
{
printf("HELLO_%d\n",a);
TYPE k = *(TYPE*)p;
if(a < 10)
{
TYPE q = fun;
k(&q);
}
else
k(NULL);
}
else
printf("HELLO_%d\n",a);
}
int main()
{
TYPE k = fun;
TYPE m = fun;
m(&k);
}