难道keil 不是用的标准 C

[复制链接]
3774|15
 楼主| happy_snail 发表于 2012-10-24 10:13 | 显示全部楼层 |阅读模式
本帖最后由 happy_snail 于 2012-10-24 10:21 编辑

我用 C编译器 和 keil 做 同样的事 !!结果 居然不一样!!让我 程 跑错了!!

这是C编译器 写的程序

这是结果



下来 是 keil


结果 78 56 34 12 和 C 编译器 相反 ! 头疼呀!!



这是 是一个 芯片 的 写出 数据 ! 必须 先 从 MSB 到 LSB 写出!




结果 芯片 总是 不是 我想的那样 得到 真确 的结果!!
不知道 谁 遇到这种 结果没?! 我在 Keil 的帮助 也没找到 相关 的介绍

本帖子中包含更多资源

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

×
 楼主| happy_snail 发表于 2012-10-24 10:15 | 显示全部楼层
本帖最后由 happy_snail 于 2012-10-24 10:30 编辑

希望大家注意 这个 问题! 我菜鸟 遇到这个问题 我开始还以为 AD芯片坏了 原来 是...keil ...
谁 遇到 这种 情况 呀!! 讨论 一下 呀!!
ccxlslr 发表于 2012-10-24 10:30 | 显示全部楼层
用过ARM你就知道了,这是大小端模式问题,这是一种正常的现像。两种处理方法的编译器都有。C也没有强制规定,很多移植性好的程序,都可以选择大小端模式,当然也有的程序通过其它方法,而不依赖大小羰模式
 楼主| happy_snail 发表于 2012-10-24 10:50 | 显示全部楼层
3# ccxlslr
可以 设置 IDE 来改变吗??
wlq_9 发表于 2012-10-24 11:20 | 显示全部楼层
保险的代码是用
(x&0xff);
(x&0xff00) >> 8;
(x&0xff0000)>>16;
(x&0xff000000)>>24;
 楼主| happy_snail 发表于 2012-10-24 11:29 | 显示全部楼层
5# wlq_9
是个不错的 办法! 但是 转化 汇编 我等会看看 那个 效率 高一点 !
ccxlslr 发表于 2012-10-24 12:32 | 显示全部楼层
3# ccxlslr  
可以 设置 IDE 来改变吗??
happy_snail 发表于 2012-10-24 10:50


keil 以前的不可以,好久没用了,不知道改变没有
sxhhhjicbb 发表于 2012-10-24 12:49 | 显示全部楼层
51下的keil是大端的.
sxhhhjicbb 发表于 2012-10-24 12:51 | 显示全部楼层
51下的keil是大端的.
rockli 发表于 2012-10-24 13:04 | 显示全部楼层
最简单的编译器大小端问题。
keil arm的c编译器是小端模式,keil c51是大端模式
huangqi412 发表于 2012-10-24 13:35 | 显示全部楼层
楼主没听过大小端。。。
qqlvjh 发表于 2012-10-24 13:59 | 显示全部楼层
一般的,这类问题,等到一定时间都不叫问题了。
joyme 发表于 2012-10-24 15:52 | 显示全部楼层
效率肯定是指针方式高一点,51的做32位数的操作效率高不了的
知道大小端的问题,把指针顺序反过来就好了
O狂且O 发表于 2012-10-24 15:55 | 显示全部楼层
keil不是标准C.
Tinnal 发表于 2012-10-25 13:28 | 显示全部楼层
你这是大小端的问题,不是编译器的问题。
inurl 发表于 2012-10-29 11:24 | 显示全部楼层
CPU 是小端的, 你就只能根据CPU的特点来写代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

80

帖子

1

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