Предположим, что у меня есть следующая структура:
typedef struct
{
unsigned field1 :1;
unsigned field2 :1;
unsigned field3 :1;
} mytype;
Первые три бита будут использоваться, но sizeof(mytype)
вернет 4
, что означает 29 бит заполнения.
Мой вопрос заключается в том, что эти биты заполнения, гарантированные стандартом, равны нулю, инициализируются выражением:
mytype testfields = {0};
или
mytype myfields = {1, 1, 1};
Чтобы было безопасно выполнить следующее memcmp()
в предположении, что бит 4..29 будет равен нулю и, следовательно, не повлияет на сравнение:
if ( memcmp(&myfields, &testfields, sizeof(myfields)) == 0 )
printf("Fields have no bits set\n");
else
printf("Fields have bits set\n");