Formas de ASSERTAR expressões no momento da criação em C
Estou arrumando um código mais antigo que usa 'números mágicos' em todo o lugar para definir registros de hardware, e gostaria de usar constantes em vez desses números para tornar o código um pouco mais expressivo (na verdade, eles mapearão os nomes / valores usados para documentar os registros).
No entanto, estou preocupado que com o volume de alterações eu possa quebrar os números mágicos. Aqui está um exemplo simplificado (o conjunto de registros é mais complexo):
const short mode0 = 0;
const short mode1 = 1;
const short mode2 = 2;
const short state0 = 0;
const short state1 = 4;
const short state2 = 8;
então ao invés de:
set_register(5);
temos:
set_register(state1|mode1);
O que estou procurando é umtempo de construção versão de:
ASSERT(5==(state1|mode1));
Atualizar
@Christian, obrigado pela resposta rápida, estou interessado em uma resposta do ambiente C / non-boost também porque este é o código do driver / kernel.