1  struct S {
       2    int i : 24;
       3    char c1 : 1;
       4    char c2 : 1;
       5    char c3 : 1;
       6    char c4 : 1;
       7    char c5 : 1;
       8    char c6 : 1;
       9    char c7 : 1;
      10    char c8 : 1;
      11  };
      12  
      13  int main (void)
      14  {
      15    struct S s0 = { 1193046, 1, 1, 1, 1, 1, 1, 1, 1 };
      16    char *p = (char *) &s0;
      17  
      18  #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
      19    if (*p != 86)
      20      __builtin_abort ();
      21  #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
      22    if (*p != 18)
      23      __builtin_abort ();
      24  #endif
      25  
      26    return 0;
      27  }