#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)
ですか?