Какое внимание стоит уделить платформам с не 8-битным символом?
магические числа встречаются, например, при переключении;
большинство из них могут быть обработаны довольно просто
используя CHAR_BIT и, например, UCHAR_MAX вместо 8 и 255 (или аналогичных).
надеюсь, ваша реализация определяет это:)
это "общие" проблемы .....
другая косвенная проблема - скажем, у вас есть:
struct xyz {
uchar baz;
uchar blah;
uchar buzz;
}
это может «только» занять (в лучшем случае) 24 бита на одной платформе,
но может занять, например, 72 бита в другом месте .....
если каждый uchar содержит «битовые флаги» и каждый uchar имеет только 2 «значимых» бита или флага, которые
вы в настоящее время используете, и вы только организовали их в 3 учаров для «ясности»,
тогда это может быть относительно «более расточительным», например, на платформе с 24-битными учарами .....
ничто не может решить битовые поля, но у них есть другие вещи, на которые нужно обратить внимание
для ....
в этом случае, только одно перечисление может быть способом получения «самого маленького»
целое число, которое вам действительно нужно ....
возможно, не реальный пример, но такие вещи "кусают" меня при портировании / воспроизведении некоторого кода .....
просто тот факт, что если учар в три раза больше того, что "обычно" ожидается,
100 таких структур могут тратить много памяти на некоторых платформах .....
где "обычно" это не имеет большого значения .....
так что все еще можно «сломать» или в этом случае «очень быстро потратить много памяти» из-за
в предположении, что учар "не очень расточительный" на одной платформе относительно доступной оперативной памяти, чем на другой платформе .....
проблема может быть более заметной, например, для целых, а также других типов,
например у вас есть какая-то структура, которая нуждается в 15 битах, поэтому вы вставляете ее в int,
но на какой-то другой платформе int составляет 48 бит или что-то еще .....
"обычно" вы можете разбить его на 2 учара, но, например, с 24-битным учаром
вам нужен только один .....
так что enum может быть лучшим "общим" решением ....
зависит от того, как вы получаете доступ к этим битам:)
итак, могут быть "недостатки дизайна", которые поднимают их голову ....
даже если код все еще может работать / работать нормально, независимо от
размер учара или уинт ...
есть вещи, на которые стоит обратить внимание, даже если
в вашем коде нет "магических чисел" ...
надеюсь, что это имеет смысл:)