gpt4 book ai didi

C从特定函数指针转换为不太特定的函数指针

转载 作者:太空宇宙 更新时间:2023-11-04 04:27:12 25 4
gpt4 key购买 nike

假设我在 C 中有以下代码:

void general(void (*function)(void *something), void *something);
void funct_type1(struct something1 *something);
void funct_type2(struct something2 *something);
general(funct_type1, something1);
general(funct_type2, something2);

如何在没有指针转换警告且不手动抑制某些错误的情况下编译它?

稍后编辑:我尽量不修改 funct_type1() 和 func_type2() 的定义。

最佳答案

正确的解决方法是将特定于实现的东西折叠到抽象接口(interface)“背后”的函数中,即:

void funct_type1(void *s1)
{
struct something1 *s = s1;
/* ... rest of function ... */
}

否则,您将不得不在对 general() 的调用中转换函数指针。

关于C从特定函数指针转换为不太特定的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40261932/

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