C51编程:函数调用
有这样一段程序:
void func1()
{
...
if(...)
{
func2();
func3();
}
...
}
用的Keil C51编译器。
在执行时发现有时执行完func2()后,没有执行func3(),而是不可预知的跑道别的地方去
啦。对程序复位后,执行仍出现以上现象。
如果重新编译,则可以正确执行。
我认为原因可能有两个:
1、在调用func2()时,堆栈的空间不够用,这导致func2()执行完成后不知道返回到什么地
址啦。有个疑问是:有时调用func2()可以返回继续执行func3(),这样说明堆栈在调用
func2()时时够用的。
2、在用Keil C51编译代码时,每次生成的执行文件不一样。有没有这种可能我就不得而知
啦。
本来想用仿真器找找问题所在,不过实在是一头雾水,不知从何下手。
发表时间:2002年10月10日16:10:00