一道关于pack()和sizeof笔试题

原题:
在32位机器上,下列代码中
  1. #pragma pack(2)  
  2. class A  
  3. {  
  4.     int i;  
  5.     union U  
  6.     {  
  7.         char buff[13];  
  8.         int i;  
  9.     }u;  
  10.     void foo() {    }  
  11.     typedef char* (*f)(void*);  
  12.     enum{red, green, blue} color;  
  13. }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;
posted @ 2013-05-03 12:50  mapleyuan  阅读(211)  评论(0编辑  收藏  举报