打印

碰到一个奇怪的问题!

[复制链接]
2050|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlgcumt|  楼主 | 2012-10-9 12:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定义了两个全局变量,static uint8 a;
static uint8 b;
在程序的某处给a赋值,发现b的值也跟着改变,比如
a = 3;
我接着下一句就打印b的值,中间没有任何打断,发现b跟着变为3了,怎么也想不明白,用的编译器是ads1.2,大家有没有碰到这样的情况呀!

相关帖子

沙发
阿南| | 2012-10-9 14:23 | 只看该作者
把代码切换到混合模式,看一下他们俩是否在共用同一内存,或对各自分配的内存监控一下。否则看看你输出函数的汇编结果。
这个问题你想是想不通的,必需实际去看,或者代码被优化了等等。

使用特权

评论回复
板凳
jlgcumt|  楼主 | 2012-10-9 15:20 | 只看该作者
2# 阿南 我把其中的一个类型改为16位的就好了,不知道为啥!

使用特权

评论回复
地板
jlgcumt|  楼主 | 2012-10-9 15:21 | 只看该作者
不是共用一个内存,给b赋值的时候a不会跟着变,定义都是单独的。

使用特权

评论回复
5
nongfuxu| | 2012-10-9 15:53 | 只看该作者
本帖最后由 nongfuxu 于 2012-10-9 15:54 编辑
我接着下一句就打印b的值,中间没有任何打断,发现b跟着变为3了,怎么也想不明白,用的编译器是ads1.2,大家有没有碰到这样的情况呀!

是哪个神仙动了你ARM的内存?;P

使用特权

评论回复
6
阿南| | 2012-10-9 17:34 | 只看该作者
改成16bit的可以避开这个问题,不过还是希望楼主能够按照我2楼的建议,去查清原因

使用特权

评论回复
7
lai832| | 2012-10-9 17:43 | 只看该作者
打印a和b的地址看看,
是不是16位的U,刚好两个8位,
8+8=16了,
程序分配在同一个16位地址上(高低8位)
打印地址,什么都清楚了

使用特权

评论回复
8
airwill| | 2012-10-9 22:32 | 只看该作者
编译器不该犯这样的错误, 建议用二楼的办法看看.
如果看不明白汇编代码, 可以把生成的汇编代码贴上来让大家来分析.

使用特权

评论回复
9
chenyu988| | 2012-10-10 09:25 | 只看该作者
:)

使用特权

评论回复
10
jlgcumt|  楼主 | 2012-10-10 22:29 | 只看该作者
8# airwill 应该是编译器的问题,结贴了!

使用特权

评论回复
11
LG2012GG| | 2012-10-11 21:07 | 只看该作者
发布一下程序

使用特权

评论回复
12
jlgcumt|  楼主 | 2012-10-11 22:16 | 只看该作者
11# LG2012GG 只是猜测,问题还没解决,唉!程序很大的,问题跟上面差不多?

使用特权

评论回复
13
jlgcumt|  楼主 | 2012-10-15 12:19 | 只看该作者
查了一下两个变量的地址,不一样,谁碰到过这种问题呢!

使用特权

评论回复
14
jlgcumt|  楼主 | 2012-10-15 21:01 | 只看该作者
大牛快来解决一下!

使用特权

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

本版积分规则

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

183

主题

733

帖子

4

粉丝