打印

一个奇怪的问题?

[复制链接]
3185|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlgcumt|  楼主 | 2012-10-19 10:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2012-10-19 10:46 | 只看该作者
无图无真相
打印出了问题吧
直接查看变量的值,肯定没有问题

使用特权

评论回复
板凳
jlgcumt|  楼主 | 2012-10-19 10:54 | 只看该作者
2# ayb_ice 不是,打印没有问题,都检查过了,一直想不明白

使用特权

评论回复
地板
jlgcumt|  楼主 | 2012-10-19 10:57 | 只看该作者
2# ayb_ice 跟编译器有关系吗,正版和盗版的?

使用特权

评论回复
5
yuliang33| | 2012-10-19 11:04 | 只看该作者
可以在 混合模式下 看下编译器把这两条编译成了什么汇编

使用特权

评论回复
6
ayb_ice| | 2012-10-19 11:53 | 只看该作者
都说了直接在变量窗口查看值,我几乎敢肯定是没有问题的,如果有问题请在赋值前关掉中断再试

使用特权

评论回复
7
mcu5i51| | 2012-10-19 13:36 | 只看该作者
还是贴测试代码吧,如果两个变量没有有效引用的话会合并也挺正常的;

使用特权

评论回复
8
jlgcumt|  楼主 | 2012-10-19 16:17 | 只看该作者
7# mcu5i51

什么情况下会出现你说的这种情况呢!

使用特权

评论回复
9
jlgcumt|  楼主 | 2012-10-19 16:18 | 只看该作者
本帖最后由 jlgcumt 于 2012-10-19 16:35 编辑

我打开内存窗口的分别改变两个变量值的时候,就不会相互影响

使用特权

评论回复
10
jlgcumt|  楼主 | 2012-10-19 16:20 | 只看该作者
6# ayb_ice 在变量窗口查看一样,我试过了,关掉所有中断都不行,不过没看过汇编代码。
另外我把其中的一个变量改为16位的就好了.

使用特权

评论回复
11
ayb_ice| | 2012-10-19 17:06 | 只看该作者
6# ayb_ice 在变量窗口查看一样,我试过了,关掉所有中断都不行,不过没看过汇编代码。
另外我把其中的一个变量改为16位的就好了.
jlgcumt 发表于 2012-10-19 16:20

上图,上原代码
那还真出鬼了

使用特权

评论回复
12
jlgcumt|  楼主 | 2012-10-19 17:18 | 只看该作者
源代码比较大,是Canopen协议栈用到的两个变量,但是定义方式就跟我说的那样,挨着定义两个变量,然后在某个函数里改变其中一个变量(a)的值,另一个变量(b)就会跟着变,但改变另一个变量(b)的值就不会影响(a的值)。
我看了一下map文件,两个变量分配的地址是不一样的。

使用特权

评论回复
13
快乐小小鱼| | 2012-10-20 10:42 | 只看该作者
看看哪里让这两个变量发生关联了吧!或者是代码被优化掉了!

使用特权

评论回复
14
沈老| | 2012-10-20 10:59 | 只看该作者
Keil中变量是被覆盖的(复用的),注意各个函数如何使用变量。

使用特权

评论回复
15
amwrdfe| | 2012-10-20 11:05 | 只看该作者
是不是优化过猛了

使用特权

评论回复
16
大道至简| | 2012-10-20 11:23 | 只看该作者
估计被编译器优化了,二者共享一个地址

使用特权

评论回复
17
jlgcumt|  楼主 | 2012-10-20 12:24 | 只看该作者
14# 沈老 我把优化级别设置到最低,试了也不行!

使用特权

评论回复
18
天风立马| | 2012-10-20 23:27 | 只看该作者
看看你的b哪地方是不是也是指向a的。

使用特权

评论回复
19
jlgcumt|  楼主 | 2012-10-30 18:32 | 只看该作者
18# 天风立马
顶一个!

使用特权

评论回复
20
duhemayi| | 2012-10-31 08:24 | 只看该作者
估计被编译器优化了,二者共享一个地址

使用特权

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

本版积分规则

个人签名:善攻者,动于九天之上,善守者,藏于九地之下!

183

主题

733

帖子

4

粉丝