gpt4 book ai didi

将函数转换为函数指针

转载 作者:行者123 更新时间:2023-12-02 06:58:58 25 4
gpt4 key购买 nike

typedef void (*LoopCallback)(int fd, void * arg);

LoopCallback func_ptr = 0;

void call_back(int value)
{
printf("%d", value);
}

void sys_register_input(LoopCallback call_back)
{
func_ptr = call_back;
}

int main()
{
sys_register_input((LoopCallback)call_back);
func_ptr(33, 0);
}

在遗留项目之一中找到这段代码,这种转换在 c 中有效吗?

编辑:调用函数ptr

最佳答案

不,这是无效的。调用者期望的原型(prototype)与被调用函数的原型(prototype)不匹配,因此可能会导致未定义的行为。具体结果将取决于编译器和调用约定等因素(被调用的函数可能只是在 arg 中看到垃圾,或者线程堆栈可能被破坏导致崩溃)。

关于将函数转换为函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25540386/

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