gpt4 book ai didi

C : function pointer and typedef problem

转载 作者:太空狗 更新时间:2023-10-29 16:51:48 25 4
gpt4 key购买 nike

我有一个 C 函数,它接受一个函数指针作为参数,它是一个我将在程序结束时调用的析构函数。这是我的函数的原型(prototype):

int store_dest(void (*routine)(void *));

我想将此函数指针存储到包含其他一些信息的结构中。为了有一个很好的结构,我想有一个指向这个函数指针的typedef。这是我的类型定义:

typedef void (*my_destructor)(void *);

这是我的结构:

typedef struct my_struct{
my_destructor dest;
other_info ...
} my_struct;

在初始化步骤中,我想将“dest”字段设置为我的一个函数,这是这个函数的原型(prototype):

void* my_dummy_dest(void* foo);

当我尝试将结构的“dest”字段设置为“my_dummy_dest”时出现问题(实际上它只是一个警告,但我想抑制它):

my_struct.dest = &my_dummy_dest;

我收到“警告:来自不兼容指针类型的赋值”

当我只是比较它们时也是如此:

if (my_struct.dest == &my_dummy_dest)

我收到“警告:不同指针类型的比较缺少强制转换”

但是当我用另一个例程设置“dest”字段时,我没有收到任何警告。我不明白为什么我会收到这些警告。

最佳答案

你的虚拟析构函数被声明为返回一个 void pointer,而不是 void。此声明与您的析构函数指针的类型定义不匹配。

关于C : function pointer and typedef problem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/718728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com