检查CPU是否为大端或小端
一般而言普遍的方法是利用联合体存储数据的顺序,如
int checkCPU()
{
union w
{
int a;
char b;
}c;
c.a = 1;
return (c.b == 1); // 小端返回TRUE,大端返回FALSE
}
linux源代码
static union{ char c[4]; unsigned long l;} endian_test = {{'l','?','?','b'}}; //定义类型为union
#define endianness ((char)endian_test.l)
static bool IsBigEndian()
{
const int n = 1;
if(*(char *)&n)
{
return false;
}
return true;
}