¿Se garantiza una inicialización cero de las estructuras para limpiar las áreas acolchadas?
Supongamos que tengo la siguiente estructura:
typedef struct
{
unsigned field1 :1;
unsigned field2 :1;
unsigned field3 :1;
} mytype;
Los primeros 3 bits serán utilizables perosizeof(mytype)
volverá4
lo que significa 29 bits de relleno. Mi pregunta es, ¿estos bits de relleno garantizados por el estándar se inicializan a cero por la declaración:
mytype testfields = {0};
o:
mytype myfields = {1, 1, 1};
De tal manera que es seguro realizar lo siguientememcmp()
en el supuesto de que los bits 4..29 serán cero y, por lo tanto, no afectarán la comparación:
if ( memcmp(&myfields, &testfields, sizeof(myfields)) == 0 )
printf("Fields have no bits set\n");
else
printf("Fields have bits set\n");