打印

难道keil 不是用的标准 C

[复制链接]
3192|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 happy_snail 于 2012-10-24 10:21 编辑

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

这是C编译器 写的程序

这是结果



下来 是 keil


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



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




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

06.jpg (46.29 KB )

06.jpg

相关帖子

沙发
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 来改变吗??

使用特权

评论回复
5
wlq_9| | 2012-10-24 11:20 | 只看该作者
保险的代码是用
(x&0xff);
(x&0xff00) >> 8;
(x&0xff0000)>>16;
(x&0xff000000)>>24;

使用特权

评论回复
6
happy_snail|  楼主 | 2012-10-24 11:29 | 只看该作者
5# wlq_9
是个不错的 办法! 但是 转化 汇编 我等会看看 那个 效率 高一点 !

使用特权

评论回复
7
ccxlslr| | 2012-10-24 12:32 | 只看该作者
3# ccxlslr  
可以 设置 IDE 来改变吗??
happy_snail 发表于 2012-10-24 10:50


keil 以前的不可以,好久没用了,不知道改变没有

使用特权

评论回复
8
sxhhhjicbb| | 2012-10-24 12:49 | 只看该作者
51下的keil是大端的.

使用特权

评论回复
9
sxhhhjicbb| | 2012-10-24 12:51 | 只看该作者
51下的keil是大端的.

使用特权

评论回复
10
rockli| | 2012-10-24 13:04 | 只看该作者
最简单的编译器大小端问题。
keil arm的c编译器是小端模式,keil c51是大端模式

使用特权

评论回复
11
huangqi412| | 2012-10-24 13:35 | 只看该作者
楼主没听过大小端。。。

使用特权

评论回复
12
qqlvjh| | 2012-10-24 13:59 | 只看该作者
一般的,这类问题,等到一定时间都不叫问题了。

使用特权

评论回复
13
joyme| | 2012-10-24 15:52 | 只看该作者
效率肯定是指针方式高一点,51的做32位数的操作效率高不了的
知道大小端的问题,把指针顺序反过来就好了

使用特权

评论回复
14
O狂且O| | 2012-10-24 15:55 | 只看该作者
keil不是标准C.

使用特权

评论回复
15
Tinnal| | 2012-10-25 13:28 | 只看该作者
你这是大小端的问题,不是编译器的问题。

使用特权

评论回复
16
inurl| | 2012-10-29 11:24 | 只看该作者
CPU 是小端的, 你就只能根据CPU的特点来写代码

使用特权

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

本版积分规则

9

主题

80

帖子

1

粉丝