其他分享
首页 > 其他分享> > c – 如何将各种类型的函数指针存储在一起?

c – 如何将各种类型的函数指针存储在一起?

作者:互联网

可以使用通用void *存储正常指针.例如

void* arr[10];
arr[0] = pChar;
arr[1] = pINt;
arr[2] = pA;

不久之后,我遇到了一个讨论,void *可能无法在所有平台(例如64位及更多)中存储没有数据丢失的函数指针.我不确定这个事实.

如果这是真的,那么存储函数指针集合的最便携方式是什么?
[注意:This question没有令人满意地回答这个问题.]

编辑:我将使用索引存储此函数指针.每当访问此集合时,都会对每个索引进行类型转换.截至目前,我只对制作数组或矢量感兴趣.]

解决方法:

您可以将函数指针转换为任何函数类型的另一个函数指针,然后返回而不会丢失.

因此,只要通过函数指针进行调用,首先将其类型转换回正确的类型,就可以将所有函数指针存储在以下内容中:

typedef void (*fcn_ptr)(void);  // 'generic' function pointer

fcn_ptr arr[10];

标签:c-3,c,function-pointers
来源: https://codeday.me/bug/20191008/1872281.html