1、#pragma pack(n)指令
指定按照对齐的字节数
#pragma pack(2)
typedef struct
{
char* a;//8 8
short b;//2 10
double c;//8 18
char d;//1+1 20
float e;//4 24
char f;//1+1 26
long g;//4 30
int h;//4 34
}test_size_t;
#pragma pack()
2、原则:成员按照从小到大进行排列
#pragma pack(8)
typedef struct
{
char d;
char f;
short b;
float e;
long g;
int h;
double c;
char* a;
}test_size_t_min;
#pragma pack()
1、《深入理解计算机系统》 P191课后题:
注:书上写long是8字节,但是win32-64的VS编译器是4字节。
#pragma pack(8)
typedef struct
{
char* a;//8 8
short b;//2 10
double c;//8 24
char d;//1+3 28
float e;//4 32
char f;//1+3 36
long g;//4 40
int h;//4+4 48
}test_size_t;
#pragma pack()
4、使用#pragma pack(1)解析字节数据流到给定的结构体,不需要字节偏移来解析;
参考:
1、#pragma pack 用法详解_机器视觉001的博客-CSDN博客
2、#pragma pack() 释疑_HUSTER593的博客-CSDN博客