Por que endianismo de bit é um problema nos campos de bi
Qualquer código portátil que usa campos de bits parece distinguir entre plataformas pequenas e grandes. Veja oeclaração de struct iphdr no kernel do lin para um exemplo desse código. Não entendo por que o endianness pouco é um problem
Pelo que entendi, os campos de bits são construções puramente de compilador, usadas para facilitar manipulações de nível de bit
Por exemplo, considere o seguinte campo de bits:
struct ParsedInt {
unsigned int f1:1;
unsigned int f2:3;
unsigned int f3:4;
};
uint8_t i;
struct ParsedInt *d = &i;
Aqui, escrevendod->f2
é simplesmente uma maneira compacta e legível de dizer(i>>1) & (1<<4 - 1)
.No entanto, as operações de bits são bem definidas e funcionam independentemente da arquitetura. Então, como os campos de bits não são portáteis?