一道关于pack()和sizeof笔试题
原题:
在32位机器上,下列代码中
- #pragma pack(2)
- class A
- {
- int i;
- union U
- {
- char buff[13];
- int i;
- }u;
- void foo() { }
- typedef char* (*f)(void*);
- enum{red, green, blue} color;
- }a;
sizeof(a)的值是()
A、20 B、21 C、22 D、24 E、非以上选项
解析:
class
A
{
int
i;
//4
union
u{
char
buff[13];
int
i;
}U;
//13
//1 对齐
void
foo(){}
//仅声明,不占空间
typedef
char
* (*f)(
void
);
//仅声明,不占空间
enum
{red,green,blue} color;
//4
} a;