I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

 

 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 

 

posted on 2011-03-26 21:17  jcsu  阅读(1983)  评论(0)    收藏  举报