modernc.org/ccgo/v3@v3.16.14/lib/testdata/bug/cpl_convert.c (about) 1 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); 2 typedef unsigned short u_int16_t __attribute__ ((__mode__ (__SI__))); 3 typedef unsigned short int __uint16_t; 4 5 enum { 6 kIsInvisible = 0x4000, 7 }; 8 9 typedef struct finderinfo { 10 u_int16_t fdFlags; 11 } __attribute__ ((__packed__)) finderinfo; 12 13 typedef struct fileinfobuf { 14 u_int32_t info_length; 15 u_int32_t data[8]; 16 } fileinfobuf; 17 18 void main() { 19 fileinfobuf finfo; 20 finderinfo *finder = (finderinfo *) &finfo.data; 21 22 printf("%d\n", kIsInvisible); 23 printf("%d\n", (((__uint16_t)((((__uint16_t)(kIsInvisible) & 0xff00) >> 8) | (((__uint16_t)(kIsInvisible) & 0x00ff) << 8))))); 24 printf("%d\n", finder->fdFlags); 25 printf("%d\n", ~(((__uint16_t)((((__uint16_t)(kIsInvisible) & 0xff00) >> 8) | (((__uint16_t)(kIsInvisible) & 0x00ff) << 8))))); 26 printf("%d\n", 0 & ~(((__uint16_t)((((__uint16_t)(kIsInvisible) & 0xff00) >> 8) | (((__uint16_t)(kIsInvisible) & 0x00ff) << 8))))); 27 28 finder->fdFlags &= ~(((__uint16_t)((((__uint16_t)(kIsInvisible) & 0xff00) >> 8) | (((__uint16_t)(kIsInvisible) & 0x00ff) << 8)))); 29 30 printf("%d\n", finder->fdFlags); 31 }