打印

为测试个小程序,被折腾一整天了,请问怎么回事?

[复制链接]
1790|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
apt|  楼主 | 2007-1-5 00:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C51的程序,程序很简单,在main()里给实参赋值,然后调用子函数test(),编译0错误,0警告;

但是连接后有2个警告提示:



子函数test()被分配到 0x0000地址,也就是程序从test()函数开始执行:



main()主函数被分配到0x00CC地址去了,调试可以观察到这部分代码不会被执行:



由于怀疑被优化掉,降低优化级别结果还是一样;
加入volatile关键字还是一样;
后在给实参赋值前加上条件语句,要根据P3口状态赋不同的值,使其不可以优化,但结果还是一样;
用7.x 和 8.x版本的keil结果都一样,用6.0版本结果不同,但也是不正确的(具体怎么忘了)。

请问:问题出在哪里?

相关帖子

沙发
xwj| | 2007-1-5 07:50 | 只看该作者

明显不对,怎么会“子函数test()被分配到 0x0000地址”

估计是你的设置问题

把你的项目目录打包发上来看看

使用特权

评论回复
板凳
wswh2o| | 2007-1-5 08:20 | 只看该作者

你写的是mian,不是main!!!!!!!!!!!

使用特权

评论回复
地板
heyunhuan| | 2007-1-5 08:21 | 只看该作者

re

你好好看看你的程序吧!
我看你的编译结果就知道你的main()有问题。
你是不是把你的main()写成mian()了啊?
    SEGMENT: ?PR?MIAN?MAIN   
这能对吗?????????
改过来就好了,。以后写程序的时候要注意哦。。。。。。
你要是这样写的话,到哪里都是一样的错。呵呵……

使用特权

评论回复
5
HWM| | 2007-1-5 08:23 | 只看该作者

程序“没错”,只是警告

可惜的是不可能按你的意图去执行。

使用特权

评论回复
6
apt|  楼主 | 2007-1-5 10:44 | 只看该作者

啊!!!谢谢各位!的确是写错成mian了。

使用特权

评论回复
7
wangkj| | 2007-1-5 11:13 | 只看该作者

俺有一次海拔for() 后面加了一个;

顺手加的,找了半天才被别人发现。

使用特权

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

本版积分规则

apt

23

主题

92

帖子

0

粉丝