我有微控制器,我正在与他合作.在调试时,必须调用一个在ROM中硬编码的函数.技术参考显示了如何执行此操作: # define Device_cal (void(*)(void))0x3D7C80 和调用过程看起来像这样: (*Device_cal)
# define Device_cal (void(*)(void))0x3D7C80
和调用过程看起来像这样:
(*Device_cal)()
我无法理解这里发生了什么,所以我的问题是:
它是如何工作的?
(*(void(*)(void))0x3D7C80)()
void(*)(void)是一个函数指针的声明,它接受void并返回void类型. (*())表示表达式中下一个标记的强制转换(0x3D7C80).因此,这要求将位置0x3D7C80处的数据视为一个函数. final()调用没有参数的函数.