bitfld-3.c

来自「linux下的gcc编译器」· C语言 代码 · 共 68 行

C
68
字号
/* Test for bitfield alignment in structs and unions.  *//* { dg-do run }  *//* { dg-options "-O2" }  */extern void abort (void);extern void exit (int);typedef long la __attribute__((aligned (8)));struct A{  char a;  union UA  {    char x;    la y : 6;  } b;  char c;} a;struct B{  char a;  union UB  {    char x;    long y : 6 __attribute__((aligned (8)));  } b;  char c;} b;struct C{  char a;  struct UC  {    la y : 6;  } b;  char c;} c;struct D{  char a;  struct UD  {    long y : 6 __attribute__((aligned (8)));  } b;  char c;} d;int main (void){  if (sizeof (a) != sizeof (b))    abort ();  if (sizeof (a) != sizeof (c))    abort ();  if (sizeof (a) != sizeof (d))    abort ();  if ((&a.c - &a.a) != (&b.c - &b.a))    abort ();  if ((&a.c - &a.a) != (&c.c - &c.a))    abort ();  if ((&a.c - &a.a) != (&d.c - &d.a))    abort ();  exit (0);}

⌨️ 快捷键说明

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