若处理器是Big_endian的,则返回0;若是little endian_endian的,则返回1。函数原型:int checkCPU( );

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

这里的:4是C语言中的位域,是指取二进制中的低四位(在大端序中这个低四位是存储茬高地址的)

如果使用者只允许直接对ihl或者version成员,那么这一段代码可以不用判断是大端序或者小端序

但使用者可能使用memcpy来直接对这开頭的8位进行赋值操作,而在大端序和小端序的机器上会产生不同的情况

在小端序的机器上结果应该是

而在大端序的机器上结果则是

注意x[1]嘚地址都是比x[0]高的。

因此为了提高兼容性(程序可以被小端序和大端序的机器共用)需要预先判断是大端序还是小端序,并调换ihr和version在内存中的位置

我要回帖

更多关于 主的恩典 的文章

 

随机推荐