c - 指向 ROM 中函数的指针

标签 c embedded

我正在使用微 Controller 。调试时,需要从 ROM 中硬编码的函数调用函数。技术引用展示了如何做到这一点:

# define Device_cal (void(*)(void))0x3D7C80

调用过程如下所示:

(*Device_cal)()

我不明白这里到底发生了什么,所以我的问题是: 它是如何工作的?

最佳答案

void (*) (void) 是一种类型。它是一个指向不带参数并返回 void 的函数的指针。

(void(*)(void)) 0x3D7C800x3D7C80 整数转换为该函数指针。

(*Device_cal)() 调用函数。

(Device_cal)() 会执行完全相同的操作。

*Device_calDevice_cal 两边的括号是必需的,否则转换为整数不会有更高的优先级。

关于c - 指向 ROM 中函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919343/

相关文章:

c - Gtk3 和 cairo 动画 twitch

c - Sleep() 不准确吗?

c - HTTP header 的起始位置并不总是相同

c - 如何在不重构的情况下跳出并在c代码中的任意位置恢复

c - 裸机中 zynq 中的以太网驱动程序实现

c - 使用中断处理程序作为事件监听器有什么问题

rust - 无法在初始化中使用lateinit变量

c - 如何定义和 typedef 一个包含指向自身的指针的结构?

embedded - 每次 SPI 发送都会导致 MSP430 上接收到 0

c - PC Lint 错误 714