bitreverse-16.c

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

C
112
字号
/* APPLE LOCAL file 4401224 */extern void abort();/* { dg-do run { target powerpc*-*-darwin* } } *//* { dg-options "-std=gnu99" } */#pragma reverse_bitfields on#pragma ms_struct on#pragma pack(push,2)typedef struct _S5{        unsigned short s;        unsigned int lbf1 : 8;        unsigned int lbf2 : 8;        unsigned int lbf3 : 8;        unsigned int lbf4 : 8;} S5;#pragma pack(pop)void TestS5_1(void){        S5 s5 = {0};        unsigned char * rgb = (unsigned char *) &s5;        rgb[0] = 0x1;        rgb[1] = 0x2;        rgb[2] = 0x3;        rgb[3] = 0x4;        rgb[4] = 0x5;        rgb[5] = 0x6;	if (s5.lbf1!=6 ||	    s5.lbf2!=5 ||	    s5.lbf3!=4 ||	    s5.lbf4!=3 )	  abort();};void TestS5_2(void){        S5 s5 = {0};        unsigned char * rgb = (unsigned char *) &s5;        s5.lbf1 = 0x3;        s5.lbf2 = 0x4;        s5.lbf3 = 0x5;        s5.lbf4 = 0x6;	if (rgb[2]!=6 ||	    rgb[3]!=5 ||	    rgb[4]!=4 ||	    rgb[5]!=3 )	  abort();};#pragma pack(push,2)typedef struct _S6{        unsigned int lbf1 : 8;        unsigned int lbf2 : 8;        unsigned int lbf3 : 8;        unsigned int lbf4 : 8;} S6;#pragma pack(pop)void TestS6_1(void){        S6 s6 = {0};        unsigned char * rgb = (unsigned char *) &s6;        rgb[0] = 0x3;        rgb[1] = 0x4;        rgb[2] = 0x5;        rgb[3] = 0x6;	if (s6.lbf1!=6 ||	    s6.lbf2!=5 ||	    s6.lbf3!=4 ||	    s6.lbf4!=3 )	  abort();};void TestS6_2(void){        S6 s6 = {0};        unsigned char * rgb = (unsigned char *) &s6;        s6.lbf1 = 0x3;        s6.lbf2 = 0x4;        s6.lbf3 = 0x5;        s6.lbf4 = 0x6;	if (rgb[0]!=6 ||	    rgb[1]!=5 ||	    rgb[2]!=4 ||	    rgb[3]!=3 )	  abort();};int main(void){	if(sizeof(S5)!=6 || sizeof(S6)!=4)	  abort();        TestS5_1();        TestS6_1();        TestS5_2();        TestS6_2();        return 0;}

⌨️ 快捷键说明

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