dandywang的笔记 https://bbs.21ic.com/?416677 [收藏] [复制] [RSS] 单片机,嵌入式

日志

单片机c语言绝对地址跳转(使用函数指针)

已有 2550 次阅读2011-2-14 05:32 |系统分类:单片机| 心得

在IAP的bootloader中经常使用到地址跳转,指定程序跳转到某一地址运行,例如强制跳转到0x2c去执行,则可使用(*((void (*)(void))0x2c)))();
实际上这是运用的函数指针,可以这样分解:

1,函数指针的定义为 void (* fd) (void); 省略参数的函数原型为
   void (*)(void).
2, 0x2c,   这里的0x2c为地址,可以认为是变量(个人理解), 可以理解为将变量0x2c进行强制类型转换,转换成函数指针类型,即( void(*)(void) )0x2c.
3,调用函数。   (*     (func)    )  ();    func 为函数指针(void(*)(void) )0x2c,  合起来就是 (* ( (void(*)(void) )0x2c) )();




路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)