次の構造体が与えられました。
struct s2 {
int f0;
char f1;
unsigned long long f2;
unsigned long f3;
short f4;
long f5;
};
#pragma pack (1)
struct s2_packed {
int f0;
char f1;
unsigned long long f2;
unsigned long f3;
short f4;
long f5;
};
#pragma pack ()
struct s3 {
unsigned short f0;
int f1;
unsigned int f2;
int f3;
unsigned short f4;
char f5;
};
s2_packed
梱包する必要があることは理解していますが、s3
梱包されていますか? コールは何をし#pragma pack ()
ますか?
アップデート
s3のバイトを調べたところ、実際にパックされています..ここで何が起こっているのかわからない、何かアイデアはありますか?
アップデート
これが私makefile
が与えられたものです:
all:
gcc -m32 -g -O -Wall struct.c main.c -o struct
clang:
clang -m32 -g -O -Wall struct.c main.c -o struct
strict:
gcc -m32 -g -O -Wall -Werror struct.c main.c -o struct
clang-strict:
clang -m32 -g -fsanitize=undefined -O -Wall -Werror struct.c main.c -o struct
clean:
rm -f struct