¿Qué tipo de consideración vale la pena dar a las plataformas con caracteres que no son de 8 bits?
los números mágicos ocurren, por ejemplo, cuando se cambia;
la mayoría de estos pueden manejarse simplemente usando CHAR_BIT y, por ejemplo, UCHAR_MAX en lugar de 8 y 255 (o similar).
espero que su implementación los defina :)
esos son los problemas "comunes" .....
Otro problema indirecto es decir que tiene:
struct xyz {
uchar baz;
uchar blah;
uchar buzz;
}
esto podría "solo" tomar (el mejor de los casos) 24 bits en una plataforma, pero podría tomar, por ejemplo, 72 bits en otro lugar .....
si cada uchar contenía "indicadores de bit" y cada uchar solo tenía 2 bits o indicadores "significativos" que estaba usando actualmente, y solo los organizó en 3 uchars para "claridad", entonces podría ser relativamente "más derrochador", por ejemplo, en una plataforma con uchars de 24 bits .....
nada que los campos de bits no puedan resolver, pero tienen otras cosas a tener en cuenta ...
en este caso, una sola enumeración podría ser una forma de obtener el número entero "más pequeño" que realmente necesita ...
tal vez no sea un ejemplo real, pero cosas como esta me "mordieron" al portar / jugar con algún código .....
solo el hecho de que si un uchar es tres veces más grande de lo que se espera "normalmente", 100 de tales estructuras podrían desperdiciar mucha memoria en algunas plataformas ... donde "normalmente" no es un gran problema ... .
así que las cosas todavía pueden estar "rotas" o en este caso "desperdiciar mucha memoria muy rápidamente" debido a la suposición de que un uchar es "no muy derrochador" en una plataforma, en relación con la RAM disponible, que en otra plataforma ... ..
el problema puede ser más prominente, por ejemplo, para ints también, u otros tipos, por ejemplo, tiene una estructura que necesita 15 bits, por lo que la pega en un int, pero en alguna otra plataforma un int es de 48 bits o lo que sea ... .
"normalmente" puede dividirlo en 2 uchars, pero, por ejemplo, con un uchar de 24 bits solo necesitaría uno .....
entonces una enumeración podría ser una mejor solución "genérica" ...
depende de cómo estás accediendo a esos bits aunque :)
por lo tanto, puede haber "fallas de diseño" que críen su cabeza ... incluso si el código aún funciona / funciona bien, independientemente del tamaño de un uchar o uint ...
hay cosas como estas a tener en cuenta, aunque no haya "números mágicos" en su código ...
Espero que esto tenga sentido :)