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

[复制链接]
 楼主| ayfalcon 发表于 2024-5-8 22:25 | 显示全部楼层
kingTek 发表于 2024-5-8 18:43
极大概率是切bank所导致的问题,我们经历过类似情况,函数原来是好的,中间加了一个函数后就乱套了,就是因 ...

您是用汇编重新编了程序吗?我这个程序比较大,用汇编有点困难。
 楼主| ayfalcon 发表于 2024-5-8 22:28 | 显示全部楼层
cxz_00 发表于 2024-5-6 17:29
感觉像是堆栈不够用了

如何判断堆栈够用不够用呢!!
kingTek 发表于 2024-5-9 06:44 来自手机 | 显示全部楼层
本帖最后由 kingTek 于 2024-5-10 08:58 编辑

变量重叠,99.99%就是那个最垃圾的,最low的切bank思想所导致的混乱,白骨精就在这!
lb1057907736 发表于 2024-5-9 09:43 来自手机 | 显示全部楼层
ayfalcon 发表于 2024-5-8 22:24
我这边不是报错,就是函数局部变量和他调用的子函数的局部变量地址重了。 ...

把你的问题,详细反馈到这里。
先免费注册一个账户。

https://forum.microchip.com/s/sub-forums?&subForumId=a553l000000J2rAAAS&forumId=a553l000000J2pvAAC&subForumName=MPLAB%20XC8&forumName=Development%20Tools&page=1&offset=0
 楼主| ayfalcon 发表于 2024-5-9 12:13 | 显示全部楼层
本帖最后由 ayfalcon 于 2024-5-9 12:15 编辑

希望那位知道的大神给解答一下,
 楼主| ayfalcon 发表于 2024-5-9 12:14 | 显示全部楼层
lb1057907736 发表于 2024-5-9 09:43
把你的问题,详细反馈到这里。
先免费注册一个账户。

这个账号我有,但是英文水平有点差,发中文帖子可以吗?
kingTek 发表于 2024-5-10 14:50 | 显示全部楼层
应该就是bank号没切回所致,在调用函数后手动返回原bank号就可以了!
 楼主| ayfalcon 发表于 2024-5-10 15:36 | 显示全部楼层
kingTek 发表于 2024-5-10 14:50
应该就是bank号没切回所致,在调用函数后手动返回原bank号就可以了!

C语言,不用考虑BANK号呀!!
kingTek 发表于 2024-5-10 22:01 来自手机 | 显示全部楼层
本帖最后由 kingTek 于 2024-5-10 22:03 编辑

楼上就知道重复这句套话,你懂细节么?不注重细节你不出问题谁出问题?
lb1057907736 发表于 2024-5-18 22:07 来自手机 | 显示全部楼层
最近看到一个帖子,质疑编译器有错误,但又拿不出证据,只能被当作无聊的抱怨。https://forum.microchip.com/s/topic/a5CV400000013FBMAY/t395546
kingTek 发表于 2024-6-21 10:12 | 显示全部楼层
最近用回51系统写代码,感觉脑子才恢复正常,比起某某芯片来那丝滑简直爽翻!
digit0 发表于 2024-6-21 19:45 | 显示全部楼层
应该是银行号码没有剪回造成的,调用函数后手动返回原银行号码即可!

评论

我说其银行号的设计是蠢到极点的思想,没错吧!  发表于 2024-6-24 10:43
kingTek 发表于 2024-6-28 07:50 | 显示全部楼层
这些都是其万般垃圾之一种,这么垃圾的玩意竟然流传这么大
鹿鼎计 发表于 2024-7-1 18:17 | 显示全部楼层
在XC8编译器中调用函数时,局域变量的值可能会被改变,这是因为局部变量存储在栈内存中,函数调用会创建新的栈帧,可能会覆盖或修改原有局部变量值。确保正确使用引用或指针来避免意外修改。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部