关于机器CPU大小端的判断;
#include <stdio.h>
int isbig_endian_1(void);
int isbig_endian_2(void);
int main(int argc ,char *argv[])
{
printf("endian_test_1 is %s...\n",
isbig_endian_1()? "big_endian" : "little_endian");
printf("endian_test_2 is %s...\n",
isbig_endian_2()? "big_endian" : "little_endian");
return 0;
}
int isbig_endian_1(void)
{
int a = 1;
char *cp = (char *)&a;
return (char)0 == *cp;
}
int isbig_endian_2(void)
{
union {
char c;
int x;
}u;
u.x = 1;
return (char)0 == u.c;
}
两种方法虽然实现不同但原理都是一样的。
第三种方法:
#define IS_BIG_ENDIAN (*(short *)"e">0x0100)