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

来源:互联网 发布:淘宝删除子账号后 编辑:程序博客网 时间:2024/06/07 21:30

   “众所周知”,编译器为了提高访问效率,为对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位机上)

原创粉丝点击