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