预处理、const、static与sizeof-#pragma pack的作用

1:有如下代码:

#include <iostream.h>
#pragma pack(1)
struct test{
          char c;
          short s1;
          short s2;
          int i;
};

int mian()
{
    cout<<sizeof(test)<<endl;
    return 0;
}

    代码第3行用#pragma pack将对其设为1.由于结构体test中的成员s1、s2和i的自身对齐分别为2、2和4,都小于1.因此它们都是用1作为对齐,sizeof(test)=1+2+2+4=9.

    如果注释掉第3行,则编译器默认对齐为8.所以各个成员自身的对齐都小于8,因此它们使用自身的对齐,sizeof(test)=1+1(补齐)+2+2+2(补齐)+4=12.

原文地址:https://www.cnblogs.com/lovemi93/p/7637767.html