cla*_*laf 9 c typedef function-pointers
我有一个C函数,它将一个函数指针作为参数,它是一个析构函数,我将在程序结束时调用它.这是我的功能原型:
int store_dest(void (*routine)(void *));
Run Code Online (Sandbox Code Playgroud)
我想将此函数指针存储到具有其他一些信息的结构中.为了有一个很好的结构,我希望有一个typedef到这个函数指针.这是我的typedef:
typedef void (*my_destructor)(void *);
Run Code Online (Sandbox Code Playgroud)
这是我的结构:
typedef struct my_struct{
my_destructor dest;
other_info ...
} my_struct;
Run Code Online (Sandbox Code Playgroud)
在初始化步骤中,我想将"dest"字段设置为我的函数,这里是这个函数的原型:
void* my_dummy_dest(void* foo);
Run Code Online (Sandbox Code Playgroud)
当我尝试将结构的"dest"字段设置为"my_dummy_dest"时,会出现问题(事实上它只是一个警告,但我想抑制它):
my_struct.dest = &my_dummy_dest;
Run Code Online (Sandbox Code Playgroud)
我得到一个"警告:从不兼容的指针类型分配"
当我只是比较它们时相同:
if (my_struct.dest == &my_dummy_dest)
Run Code Online (Sandbox Code Playgroud)
我得到一个"警告:不同指针类型的比较缺少一个演员"
但是当我用另一个例程设置"dest"字段时,我没有得到任何警告.我不明白我有这些警告的原因.
因为my_dummy_test返回void*而不是void.如果要返回void*,则typedef应为
typedef void* (*my_destructor)(void *);
Run Code Online (Sandbox Code Playgroud)