#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 なら size が 4 になります。
何が起こっているのか教えていただけますか?使わなくても4つ来ます。
#pragma pack(1)では、との違いは何#pragma pack(2)ですか?