用KEIL单步调试单片机程序问题

用KEIL单步调试单片机程序时,有些地方不能设置断点是怎么回事

有些程序的代码并不是实质的指令。比如说C程序中的函数的函数名和大括号还有声明,比如下面的:
void fun(void)
{
unsigned char a;
unsigned char b;
a = 1;
b = 2;
a = a+b;
}
像上面的第一行到第四行,还有最后一行。当C文件编译时候,要编译成为汇编指令。这个时候,这五行是没有意义的,所以并不能设断点。
但如果是 unsigned char a = 1;这句话是声明再赋值,编译成汇编后是有意义的。这样才能在此设断点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-28
应该是编译器优化的问题
相似回答