Подреждам някакъв по-стар код, който използва „магически числа“ навсякъде, за да зададе хардуерни регистри, и бих искал да използвам константи вместо тези числа, за да направя кода малко по-изразителен (всъщност те ще се съпоставят с имената /стойности, използвани за документиране на регистрите).
Въпреки това се притеснявам, че с обема на промените мога да наруша магическите числа. Ето опростен пример (наборът от регистри е по-сложен):
const short mode0 = 0;
const short mode1 = 1;
const short mode2 = 2;
const short state0 = 0;
const short state1 = 4;
const short state2 = 8;
така че вместо:
set_register(5);
ние имаме:
set_register(state1|mode1);
Това, което търся, е версия за време на компилация на:
ASSERT(5==(state1|mode1));
Актуализация
@Christian, благодаря за бързия отговор, интересувам се и от отговор на C / среда без усилване, защото това е код на драйвер/ядро.