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

本文探讨了预处理指令#pragmapack在C++编程中的应用,通过一个具体的例子说明了如何使用#pragmapack来控制结构体成员的对齐方式,并进一步解释了这对结构体大小的影响。

预处理、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.

posted @ 2017-10-08 16:33 一串字符串 阅读(...) 评论(...) 编辑 收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值