#pragma pack(2) class BU { int number; union UBffer { char buffer[13]; int number; }ubuf; void foo(){} typedef char*(*f)(void*); enum{hdd,ssd,blueray}disk; }bu; sizeof(bu)值是多少
时间: 2023-06-15 09:03:50 浏览: 144
根据定义的结构体 BU,使用 #pragma pack(2) 指定 2 字节对齐,sizeof(bu) 的值应该是:
- int 类型 number 占用 2 个字节;
- union 类型 UBffer 中的 char buffer[13] 和 int number 分别占用 13 个字节和 4 个字节,但是由于 union 类型中只会使用一个成员,因此 union 只占用 13 个字节;
- void* 类型的指针占用 2 个字节;
- 枚举类型 disk 占用 4 个字节。
因此,sizeof(bu) 的值是 2 + 13 + 2 + 4 = 21。
阅读全文