字节对齐 #pragma pack(1)

 

 1  #include  < stddef.h >
 2  #include  < stdio.h >
 3 
 4  // package size defaults to 8
 5  struct  E
 6  {   
 7       int  i;    //  size 4   
 8       short  j;    //  size 2   
 9       double  k;    //  size 8
10  };
11 
12  #pragma  pack(4)
13  struct  F
14  {
15       int  i;   
16       short  j;   
17       double  k;
18  };
19 
20  #pragma  pack(2)
21  struct  T 
22  {
23       int  i;   
24       short  j;   
25       double  k;
26  };
27 
28  struct  struct_taga
29  {
30       char  i;
31       short  j;
32  };
33 
34  #pragma  pack(push, r2, 1)
35  struct  struct_tagb
36  {
37       char  i;
38       short  j;
39  };
40 
41  #pragma  pack(push, 8)
42  struct  struct_tagc
43  {
44       char  i;
45       short  j;
46  };
47 
48 
49  void  main() 
50  {  
51      printf( " %d  " , offsetof(E, i));   
52      printf( " %d  " , offsetof(E, j));
53      printf( " %d\n " , offsetof(E, k));
54      printf( " %d  " , offsetof(F, i));
55      printf( " %d  " , offsetof(F, j)); 
56      printf( " %d\n " , offsetof(F, k));
57      printf( " %d  " , offsetof(T, i));
58      printf( " %d  " , offsetof(T, j)); 
59      printf( " %d\n " , offsetof(T, k));
60 
61      printf( " sizeof(E) = %d\n " sizeof (E));
62      printf( " sizeof(F) = %d\n " sizeof (F));
63      printf( " sizeof(T) = %d\n " sizeof (T));
64 
65      printf( " sizeof(struct_taga) = %d\n " sizeof (struct_taga));
66      printf( " sizeof(struct_tagb) = %d\n " sizeof (struct_tagb));
67      printf( " sizeof(struct_tagc) = %d\n " sizeof (struct_tagc));
68  }

 

0 4 8
0 4 8
0 4 6
sizeof(E) = 16
sizeof(F) = 16
sizeof(T) = 14
sizeof(struct_taga) = 4
sizeof(struct_tagb) = 3
sizeof(struct_tagc) = 4 

 

转载于:https://www.cnblogs.com/JCSU/articles/1996540.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值