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