C语言中强制地址跳转详解

C语言中强制地址跳转详解,第1张

概述C语言强制地址跳转详解#definejump(TargetAddr)(*((void(*)())(TargetAddr))()第一个((void(*)( )),意思为强制类型转换为一个无形参,无返回值的函数指针,(*(TargetAddr))为跳转地址,但是函数指针变

C语言中强制地址跳转详解

#define jump(TargetAddr )  (*((voID(*)())(TargetAddr))()

第一个(( voID( * )(  )) ,意思为强制类型转换为一个无形参,无返回值的函数指针,(*(TargetAddr))为跳转地址,但是函数指针变量不能为常数所以要加((voID( * )(  )) 进行强制类型转换。最后一个()为执行的意思。

整一条指定的目的是为了跳转到一个绝对地址执行函数。

1、在单片机中可以实现软件复位,比如跳转到0地址。

2、如果程序是由多个程序合并的,跳转到某一个确定的用户程序地址执行,如果flash空间足够大的话,可以实现当多份不相同的代码合并为一份后,在软件上做逻辑跳转,好处是新程序不必为旧程序做大量的兼容工作,通常旧程序含有大量的前人的编程习惯,比如宏定义

#define ture 0   

 #define  fault    ture  

我真见过这么定义的

3、bootloader跳转,这个不解释 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

以上是内存溢出为你收集整理的C语言中强制地址跳转详解全部内容,希望文章能够帮你解决C语言中强制地址跳转详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存