免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1199 | 回复: 4
打印 上一主题 下一主题

十分疑惑的C问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-11 08:19 |只看该作者 |倒序浏览
以前小弟经常用TC3来编程序,由于工作需要,现在在solaris unix下进行软件开发小应用程序,遇到以下的难题,望各位大虾指教。

union TAG_DWORD
{
                uc        ch[4] ;
        usi word[2] ;
        ui        Dword ;
}Dword ;
若这样赋值:
Dword.ch[0] = 0x12 ;
Dword.ch[1] = 0x34 ;
Dword.ch[2] = 0x56 ;
Dword.ch[3] = 0x78 ;
那么在TC3下,
Dword.word[0]=0x3412;
Dword.word[1]=0x7856;
Dword.Dword=0x78563412;
而在unix下,却为
Dword.word[0]=0x1234;
Dword.word[1]=0x5678;
Dword.Dword=0x12345678;
好像ch[0]是最高字节,ch[3]为最低字节,
同样的,word[0]是高字,word[1]是低字,请问是这样吗?
有什么办法可以让编译器gcc认为和TC3下有同样的解释呢?
谢谢了!

论坛徽章:
0
2 [报告]
发表于 2006-01-11 13:23 |只看该作者
清班主指点下哦1

论坛徽章:
0
3 [报告]
发表于 2006-01-11 13:59 |只看该作者
这个是不同体系结构的CPU字节顺序不同的问题.
Intel x86 体系结构是little endian(LE)
Bfin的是 little endian
ARM同时支持两种,一般也使用little endian
PPC 是BIG endian(LE)

此外还要注意结构体的字节对齐问题!

论坛徽章:
0
4 [报告]
发表于 2006-01-11 14:17 |只看该作者
楼上说的不错了,
Intel x86 体系结构是little endian(LE)
是低位优先顺序。

论坛徽章:
0
5 [报告]
发表于 2006-01-11 14:55 |只看该作者
谢谢哦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP