Microchip
直播中

孙奕

7年用户 879经验值
私信 关注
[问答]

XC8不可预测的编译器错误

当用XC8 1.44编译一个大型PIC16F1819项目时,我会得到编译器错误,这是我无法解释的。例如,当我试图在C中插入一个简单的行时,这个错误发生了,当我删除这行时,它消失了。但它不是特定的行,它可以在我的代码中任何地方,也可以是一个简单的变量赋值。我的假设是,当模块大小变化和交叉边界时,必须有溢出。我试图跟踪这个例子的错误,但是它只发生在一个大项目中。我如何解释这条线?指向C源文件的行号972显然与错误无关。我应该检查.obj文件中的哪一行以了解导致溢出的原因?0xA8C是一个指令吗?0x6080是一个字节地址,显然3047是0x6080的字地址。由于如果出现编译器错误,则不生成.lst文件,因此我不知道在哪里搜索。错误[1357]D:ProjectHP25LPHP25LP.c;972。在0x608e/0x2--gt;0x3047(HP25LP.Obj/0x/0xC)中以2字节固定溢出溢出0xa8c

回帖(19)

张娜

2020-3-13 06:39:40
当我在一个文件中声明大小不同于另一个文件的变量时,经常发生修复程序溢出。
举报

魏渝韦

2020-3-13 06:57:00
我在头文件中声明每个全局变量,这些变量都包含在每个地方。这不可能是原因。当不使用BuffMaskMe宏时,安装程序代码中也会出现固定溢出。我的问题是如何追踪引起溢出的那条线?
举报

陈晨

2020-3-13 07:08:17
问题是链接错误。有一场错过比赛。试试看你是否能在地图文件中找到地址。如果您的ASM正在引发问题,编译器可能不会对其进行标记。
举报

王璨

2020-3-13 07:13:37
并不太难:D:ProjectHP25LPHP25LP.c;972-HP25LP.c-line 972。我想这是试图存储值0xA8C的一些常量声明。关于字节地址0x608Eresp.单词地址0x3047。除非我能看到源代码,否则很难评估这一行“……显然没有关系……”如果使用宏,编辑器的行号和编译器的行号可能不同。检查一些预处理的CARCE转储可能会或可能没有帮助。也许最好找一些指令把上面的值存储到ROM中。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分