gpt4 book ai didi

c - 函数指针,如何转换?

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

我写了一个函数来测试功能。我想要灵活,这就是函数指针的原因。

我的代码可以正常工作,但是否有可能避免下面的警告?我想到了一个 Actor 。

所以我尝试在&tickGet 前面设置一个(UINT32 *),但它不起作用。

你能帮帮我吗?

ULONG tickGet (void);

void WCET_Measurement(UINT32 (*Function)(void)){}

WCET_Measurement(&tickGet);

编译警告

warning: passing arg 1 of `WCET_Measurement' from incompatible pointer type

最佳答案

转换函数指针是明确定义的。但是,通过不兼容的指针调用函数是未定义的行为。因此,如果 UINT32 是与 ULONG 不同的类型,那么事情就会出错。

但如果你真的想转换,那么你可以这样做:

WCET_Measurement((UINT32 (*)(void))&tickGet);

或者更好的是,使用 typedef:

typedef UINT32 (*MyFunc)(void);

WCET_Measurement((MyFunc)&tickGet);

关于c - 函数指针,如何转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14360451/

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