有点晕 请教个C问题

[复制链接]
2944|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的当然知道该怎么用也不会乱用)
gooogleman 发表于 2009-10-10 17:40 | 显示全部楼层
函数指针,直接跑到那个地址去了,bootloader下很常用的。
 楼主| itelectron 发表于 2009-10-11 10:40 | 显示全部楼层
谢谢 LS 各位 .在肯 BOOT 相关 代码.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2761

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部