问答

汇集网友智慧,解决技术难题

21ic问答首页 - XC8编译器调用函数后局域变量值被改变

XC8编译器调用函数后局域变量值被改变

ayfalcon2024-05-06
回答 +关注 13
16441人浏览 41人回答问题 分享 举报
41 个回答
  • 没看到例程,只能瞎猜……
  • ayfalcon 发表于 2024-5-6 15:59
    设置断点看过了,就是被调用的函数局域变量地址与母函数局域变量地址重了!!所以局域变量值在调用函数之 ...

    你这里有没有递归调用?
  • ayfalcon 发表于 2024-5-6 15:59
    设置断点看过了,就是被调用的函数局域变量地址与母函数局域变量地址重了!!所以局域变量值在调用函数之 ...

    感觉像是堆栈不够用了
  • qintian0303 发表于 2024-5-6 14:54
    只能设置断点看了,不知道是什么编译器或者开发环境,现在应该都可以看Flash的值,一般有溢出才可能出现这 ...

    设置断点看过了,就是被调用的函数局域变量地址与母函数局域变量地址重了!!所以局域变量值在调用函数之后就被改变,而此变量在调用之后还要使用,所以出错了。
  • 只能设置断点看了,不知道是什么编译器或者开发环境,现在应该都可以看Flash的值,一般有溢出才可能出现这个问题
  • lb1057907736 发表于 2024-5-6 12:34
    很明确了,程序修改后出问题了。修改后的你又找不出问题,开始怀疑编译器问题。你要学会调试程序。重新建 ...

    谢谢!!!我从头再试试把!!关键是现在程序挺大了!从头试太麻烦。
  • ayfalcon 发表于 2024-5-6 12:02
    XIDE v5.40,XC8 2.36.芯片是PIC18F67K22,编译器设置过,但是恢复默认值后还是一个样。我电脑里有XC8 2.1 ...

    很明确了,程序修改后出问题了。修改后的你又找不出问题,开始怀疑编译器问题。你要学会调试程序。重新建一个工程,把无关的模块去掉,最小化排查范围,一定要复现出问题。说了很多次了,请接受建议!
  • lb1057907736 发表于 2024-5-6 10:59
    先问一下,你所使用的环境,具体芯片型号,编译器版本,X IDE版本。你有没有对编译器进行过设置,一般默认 ...

    XIDE v5.40,XC8 2.36.芯片是PIC18F67K22,编译器设置过,但是恢复默认值后还是一个样。我电脑里有XC8 2.1版本和2.36两个版本,试了一下都一样,所以我感觉和编译器版本没有关系,应该就是程序的问题,但是程序一切都正常,原来也没有问题,就是最近程序修改了出现这个问题了,但是修改的地方和这个函数没有关系!!
  • 请制作一个能复现问题的最小例程的工程,说不定你在制作的过程中就能发现问题了。做减法逐步缩小范围,我们调试新程序,不都是这样做的。
  • 先问一下,你所使用的环境,具体芯片型号,编译器版本,X IDE版本。你有没有对编译器进行过设置,一般默认设置就够用了。

您需要登录后才可以回复 登录 | 注册