发新帖我要提问
12
返回列表
打印

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

[复制链接]
楼主: ayfalcon
手机看帖
扫描二维码
随时随地手机跟帖
21
ayfalcon|  楼主 | 2024-5-8 22:25 | 只看该作者 回帖奖励 |倒序浏览
kingTek 发表于 2024-5-8 18:43
极大概率是切bank所导致的问题,我们经历过类似情况,函数原来是好的,中间加了一个函数后就乱套了,就是因 ...

您是用汇编重新编了程序吗?我这个程序比较大,用汇编有点困难。

使用特权

评论回复
22
ayfalcon|  楼主 | 2024-5-8 22:28 | 只看该作者
cxz_00 发表于 2024-5-6 17:29
感觉像是堆栈不够用了

如何判断堆栈够用不够用呢!!

使用特权

评论回复
23
kingTek| | 2024-5-9 06:44 | 只看该作者
本帖最后由 kingTek 于 2024-5-10 08:58 编辑

变量重叠,99.99%就是那个最垃圾的,最low的切bank思想所导致的混乱,白骨精就在这!

使用特权

评论回复
24
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

使用特权

评论回复
25
ayfalcon|  楼主 | 2024-5-9 12:13 | 只看该作者
本帖最后由 ayfalcon 于 2024-5-9 12:15 编辑

希望那位知道的大神给解答一下,

使用特权

评论回复
26
ayfalcon|  楼主 | 2024-5-9 12:14 | 只看该作者
lb1057907736 发表于 2024-5-9 09:43
把你的问题,详细反馈到这里。
先免费注册一个账户。

这个账号我有,但是英文水平有点差,发中文帖子可以吗?

使用特权

评论回复
27
kingTek| | 2024-5-10 14:50 | 只看该作者
应该就是bank号没切回所致,在调用函数后手动返回原bank号就可以了!

使用特权

评论回复
28
ayfalcon|  楼主 | 2024-5-10 15:36 | 只看该作者
kingTek 发表于 2024-5-10 14:50
应该就是bank号没切回所致,在调用函数后手动返回原bank号就可以了!

C语言,不用考虑BANK号呀!!

使用特权

评论回复
29
kingTek| | 2024-5-10 22:01 | 只看该作者
本帖最后由 kingTek 于 2024-5-10 22:03 编辑

楼上就知道重复这句套话,你懂细节么?不注重细节你不出问题谁出问题?

使用特权

评论回复
30
lb1057907736| | 2024-5-18 22:07 | 只看该作者
最近看到一个帖子,质疑编译器有错误,但又拿不出证据,只能被当作无聊的抱怨。https://forum.microchip.com/s/topic/a5CV400000013FBMAY/t395546

使用特权

评论回复
31
kingTek| | 2024-6-21 10:12 | 只看该作者
最近用回51系统写代码,感觉脑子才恢复正常,比起某某芯片来那丝滑简直爽翻!

使用特权

评论回复
32
digit0| | 2024-6-21 19:45 | 只看该作者
应该是银行号码没有剪回造成的,调用函数后手动返回原银行号码即可!

使用特权

评论回复
评论
kingTek 2024-6-24 10:43 回复TA
我说其银行号的设计是蠢到极点的思想,没错吧! 
33
kingTek| | 2024-6-28 07:50 | 只看该作者
这些都是其万般垃圾之一种,这么垃圾的玩意竟然流传这么大

使用特权

评论回复
34
鹿鼎计| | 2024-7-1 18:17 | 只看该作者
在XC8编译器中调用函数时,局域变量的值可能会被改变,这是因为局部变量存储在栈内存中,函数调用会创建新的栈帧,可能会覆盖或修改原有局部变量值。确保正确使用引用或指针来避免意外修改。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则