C:函数指针和typedef的问题
-
23-08-2019 - |
题
我有一个C函数,它接受一个函数指针作为参数,那就是我将在我的节目的最后调用析构函数。这是我的函数的原型:
int store_dest(void (*routine)(void *));
我想这个函数指针存储到与一些其它的相关信息的结构。为了有一个很好的结构,我想有一个typedef给这个函数指针。这是我的typedef:
typedef void (*my_destructor)(void *);
这是我的结构:
typedef struct my_struct{
my_destructor dest;
other_info ...
} my_struct;
在初始化步骤中,我想将“目标”字段设置为矿的函数,这里是这个函数的原型:
void* my_dummy_dest(void* foo);
的问题(其实这只是一个警告,但我想抑制它)发生时,我尝试设置我的结构的“目标”字段“my_dummy_dest”:
my_struct.dest = &my_dummy_dest;
我得到一个“警告:从兼容的指针类型分配”
同样的,当我刚刚对它们进行比较:
if (my_struct.dest == &my_dummy_dest)
我得到一个“警告:不同指针类型的比较缺乏的铸造”
但我没有得到任何警告,当我设定的“目标”字段与另一个程序。我不知道为什么我有这些警告。
解决方案
您虚设析构函数被声明为返回一个空隙的指针下,不空隙。此声明不会为你的析构函数指针匹配的typedef。
其他提示
在的typedef应该是:
typedef void *(*my_destructor)(void *);
由于my_dummy_test返回void * 而不是无效。如果你想返回void *,typedef的应该是
typedef void* (*my_destructor)(void *);
不隶属于 StackOverflow