设为首页 加入收藏

TOP

Linux 可移植性(硬件可移植)
2014-11-24 13:00:18 来源: 作者: 【 】 浏览:0
Tags:Linux 移植 硬件

一.64位兼容


64位到底意味了什么.通常:长整型和指针数据类新使用64位,而其他数据类型可能使用32位.


1.首先遇到的问题是不安全的类型转换


int i=(int)pointer;


如果在64位机器下,pointer是64位长度的.


因此追加了void *类型到c标准中去,由gcc支持:


void *p=pointer


这样可以安全的将一个指针存储在一些通用的类型中.


二.字节序


字节序:一种是最重要的字节优先存储,另一种是最不重要的字节优先存储


相反最低位数据放在低地址就是小头字节序


那么字节序到底会导致什么问题呢


例子:



#include


#include



static inline int little_endian()


{


int endian=1;


return (0==(*(char *)&endian));


}



void broken_endian_example()


{


union


{


int i;


char j[sizeof(int)];


}test={0xdeadbeef};


int i=0;


for(i=0;i

{


printf("test.h[%d]=0x%x\n",i,test.j[i]);


}


}



int main(int argc,char **argv)


{


printf("this machine is ");


little_endian() printf("big"):printf("little");


printf("endian\n");



printf("this program was build on a machine that is :");


#if BYTE_ORDER==BIG_ENDIAN


printf("big endian\n");


#else


#if BYTE_ORDER==LITTLE_ENDIAN


printf("little endian\n");


#else


printf("something weird\n");


#endif


#endif


printf("and here is a silly example...\n");


broken_endian_example();


exit(0);


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发教程:ListView用法解.. 下一篇Android开发教程:自定义RadioBut..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)