que tipo de consideração vale a pena dar a plataformas com caracteres que não são de 8 bits?
números mágicos ocorrem, por exemplo, ao mudar;
a maioria deles pode ser tratada simplesmente usando CHAR_BIT e, por exemplo, UCHAR_MAX em vez de 8 e 255 (ou similar).
espero que sua implementação os defina :)
esses são os problemas "comuns" ...
Outra questão indireta é dizer que você tem:
struct xyz {
uchar baz;
uchar blah;
uchar buzz;
}
isso pode "apenas" levar (na melhor das hipóteses) 24 bits em uma plataforma, mas pode levar, por exemplo, 72 bits em outro lugar .....
se cada uchar continha "sinalizadores de bits" e cada uchar tinha apenas 2 bits ou sinalizações "significativos" que você estava usando no momento, e você os organizou em apenas 3 uchars para "clareza", pode ser relativamente "mais inútil", por exemplo, uma plataforma com uchars de 24 bits .....
nada que os campos de bits não possam resolver, mas eles têm outras coisas a observar ....
Nesse caso, apenas uma enumeração única pode ser uma maneira de obter o número inteiro "menor" que você realmente precisa ....
talvez não seja um exemplo real, mas coisas como essa "me mordem" ao portar / jogar com algum código .....
apenas o fato de que se um uchar é três vezes maior do que o que "normalmente" é esperado, 100 dessas estruturas podem desperdiçar muita memória em algumas plataformas ..... onde "normalmente" não é grande coisa ... .
para que as coisas ainda possam ser "quebradas" ou, neste caso, "desperdiçar muita memória muito rapidamente" devido à suposição de que um uchar "não é muito desperdício" em uma plataforma, em relação à RAM disponível, do que em outra plataforma ... ..
o problema pode ser mais proeminente, por exemplo, para ints também ou outros tipos, por exemplo, você tem alguma estrutura que precisa de 15 bits, então você o coloca em um int, mas em outra plataforma um int é de 48 bits ou o que for ... .
"normalmente", você pode dividi-lo em 2 uchars, mas, por exemplo, com um uchar de 24 bits, você precisará apenas de um .....
então um enum pode ser uma solução "genérica" melhor ....
depende de como você está acessando esses bits :)
portanto, pode haver "falhas de design" que empinam a cabeça ... mesmo que o código ainda funcione / corra bem, independentemente do tamanho de um uchar ou uint ...
há coisas assim a serem observadas, mesmo que não haja "números mágicos" em seu código ...
espero que isso faça sentido :)