首页 > 其他 > 详细

判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

时间:2014-06-27 09:29:01      阅读:344      评论:0      收藏:0      [点我收藏+]

第一个版本:

//return true in big-endian machines
bool check_big_endian1()
{
	int a = 0;
	int *p = &a;

	*(char *)p = 1;
	return a != 1;
}

采用union的第二个版本:

//return true in big-endian machines
bool check_big_endian2()
{
	union{
		int  a;
		char b;
	}var;//sizeof(var)=4
	var.a = 1;

	return var.b != 1;
}

最后看一个避免函数调用的版本:

static union
{
	int  a;
	char b;
}_s_var_endian_check = {1};

#define ISLITTLEENDIAN (_s_var_endian_check.b == 1)
#define ISBIGENDIAN !ISLITTLEENDIAN

这样就可以通过宏ISLITTLEENDIAN和ISBIGENDIAN读取静态变量的值来判断是否是小端模式或者大端模式了。

不过这是C的写法,C++里面可以采用内联(inline)函数来避开对宏的使用。



判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式,布布扣,bubuko.com

判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式

原文:http://blog.csdn.net/linysuccess/article/details/34843567

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!