首页 > 学院 > 开发设计 > 正文

试验取消以及自定义结构体中的内存对齐

2019-11-10 17:21:10
字体:
来源:转载
供稿:网友
/*.c文件声明:该文件用于试验取消以及自定义结构体中的内存对齐gcc支持但不推荐的对齐指令:#PRagma pack()   #pragma pack(n) (n=1/2/4/8)gcc推荐的对齐指令__attribute__((packed))  __attribute__((aligned(n)))__attribute__指令注意事项:当结构体内的元素类型所占字节大于n时,n的大小变为该元素所占字节的大小。使用方法如下:*/#include<stdio.h>#pragma pack(2)struct aaa{char a;int b;short d;};#pragma pack()struct bbb{char a;short d;int b;}; __attribute__((packed))struct ccc{char a;long b; //在gcc中,long为四个字节。int d;}; __attribute__((aligned(2)))int main(void){struct aaa a_1;struct bbb b_1;struct ccc c_1;printf("sizeof(a_1) = %d/n",sizeof(a_1));//8,正确。printf("sizeof(b_1) = %d/n",sizeof(b_1));//8,正确。printf("sizeof(c_1) = %d/n",sizeof(c_1));//12,正确return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表