1 | struct Hoge |
2 | { |
3 | char c; |
4 | int i; |
5 | }; |
上記の構造体サイズは理屈上は5バイトであるが、パディングされてるので実際には8バイトになっている。こいつを確実に5バイトにしたいときは#pragma pack命令を使う。
1 | #pragma pack(push, 1) |
2 | struct Hoge |
3 | { |
4 | char c; |
5 | int i; |
6 | }; |
7 | #pragma pack(pop) |
サンプルコード
01 | #include <stdio.h> |
02 |
03 | struct A |
04 | { |
05 | char c; |
06 | int i; |
07 | }; |
08 |
09 | #pragma pack(push,1) |
10 | struct B |
11 | { |
12 | char c; |
13 | int i; |
14 | }; |
15 | #pragma pack(pop) |
16 |
17 | int main() |
18 | { |
19 | printf ( "sizeof A: %d\n" , sizeof (A)); // >> sizeof A: 8 |
20 | printf ( "sizeof B: %d\n" , sizeof (B)); // >> sizeof B: 5 |
21 | return 0; |
22 | } |
参考サイト
0 件のコメント:
コメントを投稿