21ic电子技术开发论坛 单片机与嵌入式系统 Microchip XC8调用函数后局域变量值被改变
发新帖我要提问
返回列表
打印
[PIC®/AVR®/dsPIC®产品]

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

[复制链接]
724|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ayfalcon|  楼主 | 2024-4-30 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近发现个问题,有个函数里边调用别的函数后老出错,查找程序没有问题,经过仿真后发现在调用一个子函数后有几个局部变量值会发生改变,再分析原因,发现本函数的局部变量和子函数的局部变量有地址重合的,在子函数中对局部变量进行操作,返回后相应的局部变量值发生了改变,所以出错,我现在把函数的所有局部变量全部设置为了静态变量,但是这只能是个权益之计,正常来说C编译器应该能够避免这种现象的发生,我怀疑是编译器设置有问题了,但是找不到地方,有哪位大神能给帮帮忙呗。

使用特权

评论回复
沙发
chenjun89| | 2024-5-5 20:18 | 只看该作者
变量没有正确使用的bug

使用特权

评论回复
板凳
weifeng90| | 2024-5-6 07:54 | 只看该作者
重新编译后看看结果是否一样

使用特权

评论回复
地板
ayfalcon|  楼主 | 2024-5-6 09:49 | 只看该作者
chenjun89 发表于 2024-5-5 20:18
变量没有正确使用的bug

这个应该怎么处理呀,您遇到过吗?

使用特权

评论回复
5
ayfalcon|  楼主 | 2024-5-6 09:50 | 只看该作者
weifeng90 发表于 2024-5-6 07:54
重新编译后看看结果是否一样

重新编译也不行,我把XC8版本换成最新的了也不行。

使用特权

评论回复
6
ayfalcon|  楼主 | 2024-5-6 09:51 | 只看该作者
chenjun89 发表于 2024-5-5 20:18
变量没有正确使用的bug

现在就是不知道是我程序那有问题还是什么地方设置有问题。

使用特权

评论回复
7
lb1057907736| | 2024-5-6 10:24 | 只看该作者
制作一个能复现问题的例子工程发上来,大家帮你看看。你想解决问题,即使你找美国原厂的技术支持,也要求你这么做。我可以肯定是你程序的问题。

使用特权

评论回复
评论
wangchangwenqq 2024-5-7 17:18 回复TA
+1 
8
wutaosamuel| | 2024-5-8 10:31 | 只看该作者
给个例子

使用特权

评论回复
9
ayfalcon|  楼主 | 2024-5-8 23:43 | 只看该作者
lb1057907736 发表于 2024-5-6 10:24
制作一个能复现问题的例子工程发上来,大家帮你看看。你想解决问题,即使你找美国原厂的技术支持,也要求你 ...

复制不出来,我这两天反复查看程序,没有问题,编译也没有错误,即使相关的警告也么有

使用特权

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

本版积分规则

11

主题

51

帖子

1

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