打印

有点晕 请教个C问题

[复制链接]
1682|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
itelectron|  楼主 | 2009-10-9 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define DOWNLOAD_ADDRESS 0x30000000            

void (*run)(void)=(void (*)(void))(DOWNLOAD_ADDRESS);  
run();


是不这样理解  执行run();后PC==0x30000000
也等于LJMP   0x30000000


void (*run)(void)=(void (*)(void))(DOWNLOAD_ADDRESS);

拆分
void      = void

(*run)(void)   =     (*)(void)   相当与类型转换

run   =   DOWNLOAD_ADDRESS  =0x30000000

平时这类 指针用 的少,!!!!!!!!!!!!

相关帖子

沙发
itelectron|  楼主 | 2009-10-9 21:52 | 只看该作者
如果分析正确的话 用GOTO 不是更省事情么????????????????????????

使用特权

评论回复
板凳
cracker007| | 2009-10-10 08:27 | 只看该作者
goto过去,你还要goto回来,所以还要保存当前地址,没省什么事。函数调用完了之后会自动退栈返回。换句话说,函数调用把你goto要做的事情都给封装好了。

使用特权

评论回复
地板
xwj| | 2009-10-10 08:53 | 只看该作者
goto是死的,且不能全局;

函数指针是活的(可变参数,可以赋值、表达式),且能满世界乱飞。

当然,两者都不能乱用(做OS的当然知道该怎么用也不会乱用)

使用特权

评论回复
5
gooogleman| | 2009-10-10 17:40 | 只看该作者
函数指针,直接跑到那个地址去了,bootloader下很常用的。

使用特权

评论回复
6
itelectron|  楼主 | 2009-10-11 10:40 | 只看该作者
谢谢 LS 各位 .在肯 BOOT 相关 代码.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2762

帖子

8

粉丝