加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C:函数指针和typedef问题

发布时间:2020-12-16 03:21:28 所属栏目:百科 来源:网络整理
导读:我有一个C函数,它将一个函数指针作为参数,它是一个析构函数,我将在程序结束时调用它.这是我的功能的原型: int store_dest(void (*routine)(void *)); 我想将这个函数指针存储到一些其他信息的结构中.为了有一个漂亮的结构,我想要一个typedef这个函数指针.这
我有一个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;

我得到一个“警告:从不兼容的指针类型分配”

当我只是比较他们的时候,

if (my_struct.dest == &my_dummy_dest)

我得到一个“警告:不同的指针类型的比较缺少一个演员”

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

解决方法

您的虚拟析构函数被声明为返回一个void指针,而不是一个void.此声明与您的析构函数指针的typedef不匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读