1、 __attribute__ ((packed))的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。
2、 __attribute__ ((aligned(n)))的作用就是告诉编译器在编译过程中按照n字节对齐。常常用来在结构体后面进行修饰。
下面通过一段代码来进行测试
- #include <stdio.h>
- /*编译器默认是4字节对齐*/
- struct test{
- char a;
- int b;
- };
- /*按实际占用的空间大小*/
- struct test1{
- char a;
- int b;
- }__attribute__((packed));
- /*结构体大小必须4字节对齐*/
- struct test2{
- char a;
- int b;
- }__attribute__((aligned(4)));
- /*结构体大小必须8字节对齐*/
- struct test3{
- char a;
- int b;
- }__a

本文介绍了GCC编译器中两个特殊的属性:`__attribute__((packed))`和`__attribute__((aligned(n)))`。`__attribute__((packed))`用于取消编译器的默认对齐优化,使结构体成员按照实际占用字节数对齐;而`__attribute__((aligned(n)))`则用于指定结构体或成员按照指定字节数对齐。通过示例代码展示了它们在不同情况下的结构体大小影响。
最低0.47元/天 解锁文章
1121

被折叠的 条评论
为什么被折叠?



