此联合的大小返回16个字节(在C ++ Builder 2007中)。

typedef union
{
  struct
  {
    unsigned Type:2;
    unsigned Prev:31;
    unsigned Next:31;
    unsigned SizeInBytes:32;
  };
} eMyUnion;


如果我想要sizeof(eMyUnion)= 12个字节,我该如何修改此联合定义?
(我想保留这些字段及其大小,但是可以重新排序)。
有可能的 ?

最佳答案

#pragma pack(push, 1)
  struct
  {
    unsigned Type:2;
    unsigned Prev:31;
    unsigned Next:31;
    unsigned SizeInBytes:32;
  };
#pragma pack(pop)

关于c++ - C++ Builder 2007, union 和位字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15001268/

10-15 00:29