Microchip
直播中

乐延槐

8年用户 174经验值
私信 关注
[问答]

PIC18F46J50无法正常工作

大家好,我正在用PIC18F46J50开发一个项目,在XC8出现几个问题之后,我决定在这里询问一下发生了什么。我使用的是Win10、MPLABX v3.6、XC8 v1.42。我需要比较一个指针的值,看看它是否是NULL,它是代码:当它运行时,不工作……它总是执行IF块。我已经用ICD3检查了指针的值,它是NULL,但似乎忽略了它。在程序的这一部分中,唯一可行的方法是在指针中添加一个强制转换:在没有强制转换的情况下可以正常工作的代码的其他部分中,有许多类似的比较……我真的不知道怎么了!在程序的某些部分中,代码没有像预期的那样工作,在调试代码之后,我发现如果块不像预期的那样工作,则大部分比较在&&和|||中,所以我添加了一个括号,然后开始工作,一些示例:出什么事了…在这个程序中,我写了5000多行,再加上另外3000个库(u***、plib),与那些工作良好的库相比,还有几百个,或者如果,如果,.,等等,但是在某些部分相同的表达式不能正常工作,并且在调试会话出现类似这样的问题之后…再说一遍,在USB总线停止工作的时候,经过两天的调试,我发现没有一条代码出错(如果我删除了一些函数,并且程序的大小很小,它又开始工作),解决方案N将编译器版本从XC8 1.37更改为XC8 1.42,此后,USB不再出现问题。在过去的10年里,我一直在和微芯片C编译器打交道,这种事情发生在我参与过的每个项目中。那么,有人能给我一些启示吗?我做错什么了吗?还是编译器满是虫子?我不知道还有什么要考虑的。谢谢。

回帖(12)

陈晨

2019-11-7 13:10:55
Res. Name的定义是什么?你重新定义NULL了吗?
举报

李翰肃

2019-11-7 13:22:53
He:RES.NEY是Stult:NULL在CONSULL文件中的y.NULL.H中定义为:
举报

李天竹

2019-11-7 13:41:06
如果我没记错的话,==比amp;=具有更高的优先级,所以这里确实需要括号:至于Name和NULL,我建议您发布反汇编,以便我们能够看到它实际在做什么。
举报

杨玲

2019-11-7 13:54:46
如果你期望它的行为不同于它,那么你应该检查C运算符优先级表。
举报

更多回帖

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