奇怪的Floating Point Division By Zero问题.....
按照错误提示,问题应该出在除以0,但我根本就没有除法运算,于是单步调试,发现错误出在一个ShowMessage语句,函数简略如下:
void function(void) {
... // 位置1
for (int i = 0; i < 6; i ++) {
... // 位置2
pWirelessCfg->mod_en[i] = 0xAA // 其中pWirelessCfg为指向一个结构体的指针,成员mod_en为unsigned char
// 类型的数组
ShowMessage("Error take place!"); // 运行此语句,提示除以0错误
...
}
... // 位置3
}
程序运行到ShowMessage语句时会弹出一个Floating Point Division By Zero的错误,点确定后程序照常运行,如果省略ShowMessage语句,程序正常运行。
我作了几种测试:
1. 将0xAA改为其它值,运行不会出现错误,例如0xBB等,仅为0xAA才出错
2. 将ShowMessage语句放在pWirelessCfg->mod_en[i] = 0xAA语句前的任何一个位置,如位置1,2,ShowMessage语句都不会出错
3. 将ShowMessage语句放在pWirelessCfg->mod_en[i] = 0xAA语句后的任何一个位置,如位置3,ShowMessage语句就会出现Floating Point Division By Zero错误提示
4. 用MessageBox替换ShowMessage后同样出现这种问题(感觉好像只要放在pWirelessCfg->mod_en[i] = 0xAA语句后面的弹窗操作都会出现这种错误)
上面都是简单的调试,但让我疑惑了好久。。。希望得到高手指点!!!