uc/os ii操作系统中一个宏定义问题引起的程序死机问题

[复制链接]
2834|2
 楼主| 史上第一菜 发表于 2009-6-22 14:49 | 显示全部楼层 |阅读模式
这个问题的现象如下:<br />定义一个宏名称为MODEM_OPERATION的时候会导致程序死机,<br />#define&nbsp;MODEM_OPERATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//modem业务&nbsp;&nbsp;<br />经调试发现,程序死机调试器ADS提示的错误代码为:未经定义的指令;&nbsp;当屏蔽该宏时程序运行正常。<br /><br />然而使用宏MODEM_OPERATION的地方只有这里:<br />#ifdef&nbsp;&nbsp;MODEM_OPERATION<br />SmsModeProcess();&nbsp;&nbsp;//短信接收处理<br />#else<br />CpuRunLedCntEn&nbsp;=&nbsp;ENABLE;&nbsp;&nbsp;//程序运行指示灯开<br />#endif<br /><br />出现这个问题后本人做过以下几个测试:<br />1.把SmsModeProcess();语句屏蔽掉,即:<br />#ifdef&nbsp;&nbsp;MODEM_OPERATION<br />//SmsModeProcess();&nbsp;&nbsp;//短信接收处理<br />#else<br />CpuRunLedCntEn&nbsp;=&nbsp;ENABLE;&nbsp;&nbsp;//程序运行指示灯开<br />#endif<br />程序仍然死机。<br />2.如果在SmsModeProcess函数下面随意加一条无用的给变量赋值的语句,例如:<br />#ifdef&nbsp;&nbsp;MODEM_OPERATION<br />//SmsModeProcess();&nbsp;&nbsp;//短信接收处理<br />CpuRunLedCntEn&nbsp;=&nbsp;ENABLE;&nbsp;&nbsp;//程序运行指示灯开<br />#else<br />CpuRunLedCntEn&nbsp;=&nbsp;ENABLE;&nbsp;&nbsp;//程序运行指示灯开<br />#endif<br />这时无论是否屏蔽SmsModeProcess函数,程序都是正常的。<br />3.把宏MODEM_OPERATION更改成全局变量使用时,程序运行正常。<br />4.把宏名称更换,没有效果。<br />5.给宏定义一个具体的值,没有效果。<br /><br />非常困惑,大家有没有遇到过这种问题?
 楼主| 史上第一菜 发表于 2009-6-25 10:20 | 显示全部楼层

没有人遇到过这样的情况吗?

  
一级菜鸟 发表于 2009-6-25 10:52 | 显示全部楼层

自己跟进去,没代码神仙也不知道什么原因

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

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