首页 > 代码库 > 判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式
判断CPU 是小端存储(Little endian)还是大端存储(Big endian)模式
第一个版本:
//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)函数来避开对宏的使用。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。