次の構造があるとします。
typedef struct
{
unsigned field1 :1;
unsigned field2 :1;
unsigned field3 :1;
} mytype;
最初の 3 ビットは使用できますが、29 ビットのパディングを意味sizeof(mytype)
する戻ります。4
私の質問は、これらのパディングビットは、ステートメントによって初期化されたゼロであることが標準によって保証されているかということです:
mytype testfields = {0};
また:
mytype myfields = {1, 1, 1};
memcmp()
ビット 4..29 が 0 であり、したがって比較に影響しないという前提で、以下を安全に実行できるようにします。
if ( memcmp(&myfields, &testfields, sizeof(myfields)) == 0 )
printf("Fields have no bits set\n");
else
printf("Fields have bits set\n");