关于结构体对齐的设置,以GCC 32bit编译为例,我们可以来看看下面这个例子:
#include
//默认情况下,结构体一般在内存中的自动对齐格式是4个字节
//结构体设置手动对齐
//如果这里是4,那么下面的打印就是8
//如果这里是2,那么下面的打印就是6
//如果这里是1,那么下面的打印就是5
struct mystu
{
char a ;
int b ;
};
#pragma pack(4)
struct mystu0
{
char a ;
int b ;
};
#pragma pack()
#pragma pack(2)
struct mystu1
{
char a ;
int b ;
};
#pragma pack()
#pragma pack(1)
struct mystu2
{
char a ;
int b ;
};
#pragma pack()
int main(void)
{
printf("mystu:%d\n",sizeof(struct mystu));
printf("mystu0:%d\n",