程序中出现以下错误
C51 FATAL-ERROR -
ACTION: GENERATING INTERMEDIATE CODE
ERROR: FUNCTION '_DesExeEncrypt' (LINE 616, T=400, L=98, l=1): TOO COMPLEX C51 TERMINATED.
在LINE 616处是一个宏(比较长,功能类似于一个函数,由于涉及到比较多的变量,所以不方便写成函数的形式)。如果将函数DesExeEncrypt(DES运算,宏扩展之后整个函数比较大)里面某些语句,如将
for(i=0; i<4; i++)
{
DesChangeAreaIn[4+i] = desDatL[i];
}
改为
for(i=0; i<4; i++) DesChangeAreaIn[4+i] = desDatL[i];
就不会出错,删除其他可以删除的类似括号或者如上将程序写在一行上,程序就完全正常。
请问出现这种错误的原因一般是什么?是编译器的底层程序的Bug还是C51的一些值的限制(如“函数类型段总和最多255个”或者“语句行和宏定义行最多510个字符”这类原因是什么意思?和这里可能有关系吗?)错误中的T=400, L=98, l=1是什么意思,请问对程序调试有什么作用吗?
是个新手,有些信息可能提供得还不够,如有需要,请说明一下。
期望各位的解答,谢谢! |