Способы ASSERT выражений во время сборки в C
Я убираю некоторый старый код, который повсеместно использует «магические числа» для установки аппаратных регистров, и я хотел бы использовать константы вместо этих чисел, чтобы сделать код несколько более выразительным (на самом деле они будут отображаться на имена / значения, используемые для документирования регистров).
Тем не менее, я обеспокоен тем, что с объемом изменений я мог бы сломать магические числа. Вот упрощенный пример (набор регистров более сложный):
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 / non-boost, потому что это код драйвера / ядра.