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

[复制链接]
3332|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   
这能对吗?????????
改过来就好了,。以后写程序的时候要注意哦。。。。。。
你要是这样写的话,到哪里都是一样的错。呵呵……
HWM 发表于 2007-1-5 08:23 | 显示全部楼层

程序“没错”,只是警告

可惜的是不可能按你的意图去执行。
 楼主| apt 发表于 2007-1-5 10:44 | 显示全部楼层

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

wangkj 发表于 2007-1-5 11:13 | 显示全部楼层

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

顺手加的,找了半天才被别人发现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

apt

23

主题

92

帖子

0

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