深受盗版KEIL编译器之苦! 大家有没有同感? 此问题找到原因

[复制链接]
 楼主| Ryanhsiung 发表于 2012-1-8 17:33 | 显示全部楼层 |阅读模式
本帖最后由 Ryanhsiung 于 2012-1-11 20:39 编辑

太惭愧了,以下问题不是KEIL的问题,特此声明!
不过另的问题应该还是KEIL的问题:



前面遇到的问题还有好几个,每次都耽误很多时间!
由于用的是盗版的,所以只能打断了牙齿自己咽下去!

这次问题(非KEIL问题)现象表现:
在使用KEIL过程中,遇到很多编译器的问题,如下,最新发现的一个问题:
if(Slave_RecBuff[1] == (~Slave_RecBuff[2]))

  // 一直进不来  优化等级最低

Slave_RecBuff[2] =~Slave_RecBuff[2];
if(Slave_RecBuff[1] == Slave_RecBuff[2])

  // 可以进来


banyai解答 原因:
   这个不是编译器盗不盗版的问题,是整型提升,8位数据在做~时,会自动提升成整型,ARM上是32位,前面全是FF,所以两个数不相等了,做一次赋值运算,又会把整型强制转成8位,所以不会出错。
aihe 发表于 2012-1-8 19:13 | 显示全部楼层
只能说与盗版无关
李富贵 发表于 2012-1-8 22:05 | 显示全部楼层
从楼主的表达能力上看,编译器没问题,楼主太废柴。
dengm 发表于 2012-1-8 22:41 | 显示全部楼层
lz:  Slave_RecBuff[ ] 是什么数据类型? 不会是浮点数吧。
forrest11 发表于 2012-1-8 22:44 | 显示全部楼层
请2楼和3楼解释一下好吗,我没有想通什么原因。
cjseng 发表于 2012-1-8 23:30 | 显示全部楼层
有啥好解释的,想办法让Slave_RecBuff[1] 和Slave_RecBuff[2] 显示出来呗,看一下结果不就知道了。:lol
ejack 发表于 2012-1-9 07:53 | 显示全部楼层
遇到这种问题应当去看汇编,
汇编有问题,才能说编译器可能有问题。
 楼主| Ryanhsiung 发表于 2012-1-9 08:20 | 显示全部楼层
从楼主的表达能力上看,编译器没问题,楼主太废柴。
李富贵 发表于 2012-1-8 22:05


。。。 我顶你个肺  
   我这表达式有问题么??
 楼主| Ryanhsiung 发表于 2012-1-9 08:20 | 显示全部楼层
lz:  Slave_RecBuff[ ] 是什么数据类型? 不会是浮点数吧。
dengm 发表于 2012-1-8 22:41

uint8_t
 楼主| Ryanhsiung 发表于 2012-1-9 08:20 | 显示全部楼层
遇到这种问题应当去看汇编,
汇编有问题,才能说编译器可能有问题。
ejack 发表于 2012-1-9 07:53

恩,这个有必要看看
 楼主| Ryanhsiung 发表于 2012-1-9 08:21 | 显示全部楼层
有啥好解释的,想办法让Slave_RecBuff[1] 和Slave_RecBuff[2] 显示出来呗,看一下结果不就知道了。:lol
cjseng 发表于 2012-1-8 23:30

显示出来,都是对了
  【1】 0XAA  【0x55】  第1个表达式就是进不去
hotpower 发表于 2012-1-9 08:47 | 显示全部楼层
不会有问题的。
刘前辈 发表于 2012-1-9 09:21 | 显示全部楼层
本帖最后由 刘前辈 于 2012-1-9 09:29 编辑

很简单,用下面程序验证一下,我的KEIL也是盗版,十分正确,程序最后停在while(1);。

char  reg[ ]={ 00, 0xAA, 0x55 };

void main(  )
{
if ( reg[1] == (~reg [2] ) )
{
while(1);
}
}






//

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
江枫渔火 发表于 2012-1-9 09:34 | 显示全部楼层
没看出问题来~
相信软件不会有问题,
可能是使用有问题
nongfuxu 发表于 2012-1-9 09:53 | 显示全部楼层
"我深受盗版之苦"
:lol
rockli 发表于 2012-1-9 09:57 | 显示全部楼层
刘前辈真幽默
刘前辈 发表于 2012-1-9 12:31 | 显示全部楼层
很容易证实,只要再下载一个C51不同版本,替代你的C51,马上看出是谁的问题。

我有3个版本的C51,V6.23, V7.x, V9.x;  都是正版,LZ需要哪个版本,我发给你。


、、
liang7143 发表于 2012-1-9 12:52 | 显示全部楼层
if(Slave_RecBuff[1] == (~Slave_RecBuff[2]))

  // 一直进不来  优化等级最低


为什么不写成这样 0xff自己根据位数调整
if((Slave_RecBuff[1] +Slave_RecBuff[2] ) == 0xff)

qqxjyxjy 发表于 2012-1-9 13:10 | 显示全部楼层
ddd深受盗版之苦
wzq2ic 发表于 2012-1-9 13:12 | 显示全部楼层
if(Slave_RecBuff[1] == (~Slave_RecBuff[2]))

  // 一直进不来  优化等级最低


也可以写成这样
if(Slave_RecBuff[1]^Slave_RecBuff[2]==0xff)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:嵌入式技术专家
简介:道阻且长,行则将至!

64

主题

4653

帖子

14

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