打印

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

[复制链接]
13718|92
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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[ ] 是什么数据类型? 不会是浮点数吧。

使用特权

评论回复
5
forrest11| | 2012-1-8 22:44 | 只看该作者
请2楼和3楼解释一下好吗,我没有想通什么原因。

使用特权

评论回复
6
cjseng| | 2012-1-8 23:30 | 只看该作者
有啥好解释的,想办法让Slave_RecBuff[1] 和Slave_RecBuff[2] 显示出来呗,看一下结果不就知道了。:lol

使用特权

评论回复
7
ejack| | 2012-1-9 07:53 | 只看该作者
遇到这种问题应当去看汇编,
汇编有问题,才能说编译器可能有问题。

使用特权

评论回复
8
Ryanhsiung|  楼主 | 2012-1-9 08:20 | 只看该作者
从楼主的表达能力上看,编译器没问题,楼主太废柴。
李富贵 发表于 2012-1-8 22:05


。。。 我顶你个肺  
   我这表达式有问题么??

使用特权

评论回复
9
Ryanhsiung|  楼主 | 2012-1-9 08:20 | 只看该作者
lz:  Slave_RecBuff[ ] 是什么数据类型? 不会是浮点数吧。
dengm 发表于 2012-1-8 22:41

uint8_t

使用特权

评论回复
10
Ryanhsiung|  楼主 | 2012-1-9 08:20 | 只看该作者
遇到这种问题应当去看汇编,
汇编有问题,才能说编译器可能有问题。
ejack 发表于 2012-1-9 07:53

恩,这个有必要看看

使用特权

评论回复
11
Ryanhsiung|  楼主 | 2012-1-9 08:21 | 只看该作者
有啥好解释的,想办法让Slave_RecBuff[1] 和Slave_RecBuff[2] 显示出来呗,看一下结果不就知道了。:lol
cjseng 发表于 2012-1-8 23:30

显示出来,都是对了
  【1】 0XAA  【0x55】  第1个表达式就是进不去

使用特权

评论回复
12
hotpower| | 2012-1-9 08:47 | 只看该作者
不会有问题的。

使用特权

评论回复
13
刘前辈| | 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);
}
}






//

使用特权

评论回复
14
江枫渔火| | 2012-1-9 09:34 | 只看该作者
没看出问题来~
相信软件不会有问题,
可能是使用有问题

使用特权

评论回复
15
nongfuxu| | 2012-1-9 09:53 | 只看该作者
"我深受盗版之苦"
:lol

使用特权

评论回复
16
rockli| | 2012-1-9 09:57 | 只看该作者
刘前辈真幽默

使用特权

评论回复
17
刘前辈| | 2012-1-9 12:31 | 只看该作者
很容易证实,只要再下载一个C51不同版本,替代你的C51,马上看出是谁的问题。

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


、、

使用特权

评论回复
18
liang7143| | 2012-1-9 12:52 | 只看该作者
if(Slave_RecBuff[1] == (~Slave_RecBuff[2]))

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


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

使用特权

评论回复
19
qqxjyxjy| | 2012-1-9 13:10 | 只看该作者
ddd深受盗版之苦

使用特权

评论回复
20
wzq2ic| | 2012-1-9 13:12 | 只看该作者
if(Slave_RecBuff[1] == (~Slave_RecBuff[2]))

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


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

使用特权

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

本版积分规则

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

64

主题

4654

帖子

14

粉丝