我有一个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;
在初始化步骤中,我想将“dest”字段设置为我的一个函数,以下是该函数的原型:
void* my_dummy_dest(void* foo);
当我尝试将结构体的“dest”字段设置为“my_dummy_dest”时,出现了一个问题(实际上只是一个警告,但我想要抑制它):
my_struct.dest = &my_dummy_dest;
我看到一条警告:“warning: assignment from incompatible pointer type”
仅仅比较它们时,也会有同样的警告。
if (my_struct.dest == &my_dummy_dest)
当我进行比较指针类型时,出现了“warning: comparison of distinct pointer types lacks a cast”的警告。但当我使用另一个例程设置“dest”字段时,没有警告。我不明白为什么会出现这些警告。