Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16348
  • 博文数量: 4
  • 博客积分: 152
  • 博客等级: 入伍新兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-24 00:21
文章分类

全部博文(4)

文章存档

2011年(4)

我的朋友
最近访客

分类: C/C++

2011-08-24 14:47:03

linux amd64, ubuntu9.10 gcc 4.4.1
代码如下:
Int64 tmp=0;
int tmpA,tmpB;
......
......
......
*(int*)(tmp + 1) = tmpA;
*(int*)tmp = tmpB;
这种赋值方法被RELEASE版本优化,导致下面的执行结果出错,DEBUG版本正常。
tmp = ~tmp + 1;

修改方法: volatile Int64 tmp = 0;
or               tmp = tmpA;    tmp = (tmp << 32) +tmpB;

windows 下,相同的代码无问题。

阅读(1080) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:全局变量,多模块

给主人留下些什么吧!~~