C51的程序,程序很简单,在main()里给实参赋值,然后调用子函数test(),编译0错误,0警告;
但是连接后有2个警告提示:
子函数test()被分配到 0x0000地址,也就是程序从test()函数开始执行:
main()主函数被分配到0x00CC地址去了,调试可以观察到这部分代码不会被执行:
由于怀疑被优化掉,降低优化级别结果还是一样; 加入volatile关键字还是一样; 后在给实参赋值前加上条件语句,要根据P3口状态赋不同的值,使其不可以优化,但结果还是一样; 用7.x 和 8.x版本的keil结果都一样,用6.0版本结果不同,但也是不正确的(具体怎么忘了)。
请问:问题出在哪里? |