我已经使用#pragma 指令编写了一个代码来对齐,但我无法理解对齐是如何发生的。我在 ubuntu 上使用 gcc。
#include<stdio.h>
#define MALE 0;
#define FEMALE 1;
#define SINGLE 0;
#define MARRIED 1;
#pragma pack(3);
int main()
{
struct emp
{
unsigned gender :1;
unsigned mar:1;
unsigned hobby:1;
unsigned scheme :1;
};
struct emp e;
e.gender=MALE;
e.mar=SINGLE;
e.hobby=1;
e.scheme=1;
printf("size of %d",sizeof(e));
return 0;
}
当我使用#pragma pack as 1 时,size 为 1,#pragma pack as 2 size 为 2,3 为 4。
你能告诉我发生了什么吗?如果我不使用它仍然 4 来。
#pragma pack(1)
那么和 和有什么区别#pragma pack(2)
呢?