2 ** @file mruby/endian.h - detect endian-ness
4 ** See Copyright Notice in mruby.h
14 #if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__)
15 # define BYTE_ORDER __BYTE_ORDER__
17 #if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__)
18 # define BIG_ENDIAN __ORDER_BIG_ENDIAN__
20 #if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__)
21 # define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
25 # if BYTE_ORDER == BIG_ENDIAN
26 # define littleendian 0
27 # elif BYTE_ORDER == LITTLE_ENDIAN
28 # define littleendian 1
32 /* can't distinguish endian in compile time */
34 check_little_endian(void)
37 return (*(unsigned char *)&n
== 1);
39 # define littleendian check_little_endian()
44 #endif /* MRUBY_ENDIAN_H */