程序之前运行的好好的,后来在程序中其它不相关的地方增加了些功能,现在测试发现键盘扫描程序在没按键的时候会莫名的返回错误按键. 用仿真器跟踪发现,键盘扫描程序返回的是个bit类型的变量,该变量初始化值为false,有按键则返回true,跟踪发现,没有检测到按键,也没有进入到相关有按键的程序段,该变量有时候会自己变成true了,看该bit变量的存储位置是[c:0x****](code区???),即使把该变量定义到bdata区,查看到的存储位置还是[c:0x****],奇怪怎么跑到code区去了?而我将该变量的类型改成unsigned char之后就没再出现这样的问题了,真是奇怪.
1.为何bit变量定义后,看到的存储空间是[c:0x****],定义到code区了?而且强制定义到bdata也没有改变. 2.难道是我修改后的程序内部运行时在另外一个不相关的地方错误的将该bit变量存储空间内的值改变了?怎么来定位这样的问题?我之前是看内存分配,看其相邻的变量是不是操作溢出了,而此处bit变量好像给存到code区了,没法看.而且也不怎么好定位吧. 3.bit类型做函数返回类型有什么不妥吗? |