让编译器不对Struct变量插入对齐字节

   “众所周知”,编译器为了提高访问效率,为对struct类型插入一些字节以达到对齐目的。(ps:在嵌入式面试中也常考察struct变量占用的空间大小,其实就是对齐的问题)

   但有些场合,比如芯片提供的存储空间很紧张,不希望编译器进行这种“对齐”优化,可以通过使用“__attribute__((packed))”关键字来,来告诉编译器不要插入对齐字节。

      __attribute__((packed))是GNU标准定义的,一般编译器都支持。


//一个简单的例子,

typedef struct myStrcuc{

   char v1;

   int v2;

   char v3;

   int v4;

}__attribute__((packed)) myStruc_s; 


使用了__attribute__((packed))后,myStruc_s变量妥妥的只占10个字节(32位机上)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值