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