C/C++ 跨平台编译兼容性,确定当前字节序为大端还是小端(支援几户所有的编译及目标平台)

__ORDER_LITTLE_ENDIAN__ 编译器宏是GUN的扩展,在其它的编译器之中是不存在的,所以我们需要进行宏的预编程,为其它编译器及目标平台统一这些编译宏,以便用户代码可以根据这些编译器宏,采用不同的位及字节处理实现。 

#if defined(_WIN32)
#if defined(_MSC_VER) && defined(_M_IX86) && !defined(_M_IA64) && !defined(_M_X64)
#define __ORDER_LITTLE_ENDIAN__     1
#define __ORDER_BIG_ENDIAN__        0
#define __BYTE_ORDER__              __ORDER_LITTLE_ENDIAN__
#elif defined(_MSC_VER) && (defined(_M_IA64) || defined(_M_X64))
#define __ORDER_LITTLE_ENDIAN__     1
#define __ORDER_BIG_ENDIAN__        0
#define __BYTE_ORDER__              __ORDER_LITTLE_ENDIAN__
#else
#define __ORDER_LITTLE_ENDIAN__     0
#define __ORDER_BIG_ENDIAN__        1
#define __BYTE_ORDER__              __ORDER_LITTLE_ENDIAN__
#endif
#endif

猜你喜欢

转载自blog.csdn.net/liulilittle/article/details/143497146