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

来源:互联网 发布:南风知我意晋江书包网 编辑:程序博客网 时间:2024/05/20 12:47

第一个版本:

//return true in big-endian machinesbool check_big_endian1(){int a = 0;int *p = &a;*(char *)p = 1;return a != 1;}

采用union的第二个版本:

//return true in big-endian machinesbool check_big_endian2(){union{int  a;char b;}var;//sizeof(var)=4var.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)函数来避开对宏的使用。



7 0
原创粉丝点击