bitreverse-10.c

来自「Mac OS X 10.4.9 for x86 Source Code gcc」· C语言 代码 · 共 65 行

C
65
字号
/* APPLE LOCAL file *//* { dg-do run { target powerpc*-*-darwin* } } */extern "C" void abort();typedef struct TestStateNorm{    unsigned int fBlah : 7;     //    unsigned int fUnused : 2;                // Currently Unused    unsigned int : 0;    unsigned int fBlah2 : 7;     //    unsigned int fUnused2: 2;                // Currently Unused} TestStateNorm;TestStateNorm v1norm = { 5, 1, 6, 2 };union u1 {  TestStateNorm tsn;  unsigned int raw[2];} unorm = { 5, 1, 6, 2 };#pragma reverse_bitfields on#pragma ms_struct ontypedef struct TestState{    unsigned int fBlah : 7;     //    unsigned int fUnused : 2;                // Currently Unused    unsigned int : 0;    unsigned int fBlah2 : 7;     //    unsigned int fUnused2 : 2;                // Currently Unused} TestState;TestState v1 = { 5, 1, 6, 2 };union u2 {  TestState ts;  unsigned int raw[2];} u = { 5, 1, 6, 2 };int main(){  if (v1norm.fBlah != 5) abort ();  if (v1norm.fUnused != 1) abort ();  if (v1norm.fBlah2 != 6) abort ();  if (v1norm.fUnused2 != 2) abort ();  if (u.ts.fBlah != 5) abort ();  if (u.ts.fUnused != 1) abort ();  if (u.ts.fBlah2 != 6) abort ();  if (u.ts.fUnused2 != 2) abort ();  if (unorm.tsn.fBlah != 5) abort ();  if (unorm.tsn.fUnused != 1) abort ();  if (unorm.tsn.fBlah2 != 6) abort ();  if (unorm.tsn.fUnused2 != 2) abort ();  if (v1.fBlah != 5) abort ();  if (v1.fUnused != 1) abort ();  if (v1.fBlah2 != 6) abort ();  if (v1.fUnused2 != 2) abort ();  if (unorm.raw[0] != 0x0a800000) abort();  if (unorm.raw[1] != 0x0d000000) abort();  if (u.raw[0] != 0x00000085) abort();  if (u.raw[1] != 0x00000106) abort();  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?