我正在使用微 Controller 。调试时,需要从 ROM 中硬编码的函数调用函数。技术引用展示了如何做到这一点:
# define Device_cal (void(*)(void))0x3D7C80
调用过程如下所示:
(*Device_cal)()
我不明白这里到底发生了什么,所以我的问题是: 它是如何工作的?
最佳答案
void (*) (void)
是一种类型。它是一个指向不带参数并返回 void
的函数的指针。
(void(*)(void)) 0x3D7C80
将 0x3D7C80
整数转换为该函数指针。
(*Device_cal)()
调用函数。
(Device_cal)()
会执行完全相同的操作。
*Device_cal
和 Device_cal
两边的括号是必需的,否则转换为整数不会有更高的优先级。
关于c - 指向 ROM 中函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919343/