验证系统大小端可以自己写方法验证,也可以使用系统提供的宏来验证:
1、简单共用体验证:
通过字节存储地址判断:
#include "stdio.h"
union num
{
int num;
char buf[4];
}a;
int main()
{
int i=0;
a.num=0x12345678;
printf("a.num[%p]\n",&a.num);
for(i=0;i<4;i++)
{
printf("%x\n",a.buf[i]);
printf("%p\n",&a.buf[i]);
}
return 0;
}
结果:
2、系统提供的宏验证(__BYTE_ORDER):
需头文件 endian.h
#include <stdio.h>
#include <endian.h>
int main(int argc, const char *argv[])
{
if(__BYTE_ORDER == __LITTLE_ENDIAN)
{
printf("LITTLE\n");
}
else if(__BYTE_ORDER == __BIG_ENDIAN)
{
printf("BIG\n");
}
else
{
printf("UNKNOW\n");
}
return 0;
}
结果: