gcc c 关于结构体对齐

来源:互联网 发布:陶瓷产品设计软件 编辑:程序博客网 时间:2024/06/05 16:06
       -Wpacked
           Warn if a structure is given the packed attribute, but the packed
           attribute has no effect on the layout or size of the structure.
           Such structures may be mis-aligned for little benefit.  For
           instance, in this code, the variable "f.x" in "struct bar" will be
           misaligned even though "struct bar" does not itself have the packed
           attribute:


                   struct foo {
                     int x;
                     char a, b, c, d;
                   } __attribute__((packed));
                   struct bar {
                     char z;
                     struct foo f;
                   };
       -Wpacked-bitfield-compat
           The 4.1, 4.2 and 4.3 series of GCC ignore the "packed" attribute on
           bit-fields of type "char"
.  This has been fixed in GCC 4.4 but the
           change can lead to differences in the structure layout.  GCC
           informs you when the offset of such a field has changed in GCC 4.4.
           For example there is no longer a 4-bit padding between field "a"
           and "b" in this structure
:

                   struct foo
                   {
                     char a:4;
                     char b:8;
                   } __attribute__ ((packed));

           This warning is enabled by default.  Use
           -Wno-packed-bitfield-compat to disable this warning.

       -Wpadded
           Warn if padding is included in a structure, either to align an
           element of the structure or to align the whole structure.
           Sometimes when this happens it is possible to rearrange the fields
           of the structure to reduce the padding and so make the structure
           smaller.


原创粉丝点击