微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 源文件包含的一个函数太大

源文件包含的一个函数太大

时间:10-02 整理:3721RD 点击:
程序中出现以下错误
   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是什么意思,请问对程序调试有什么作用吗?
是个新手,有些信息可能提供得还不够,如有需要,请说明一下。
期望各位的解答,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top