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