相关疑难解决方法(0)

在C语言中在构建时ASSERT表达式的方法

我正在整理一些旧的代码,这些代码使用"幻数"来设置硬件寄存器,我想使用常量而不是这些数字来使代码更具表现力(实际上它们将映射到名称/用于记录寄存器的值).

但是,我担心随着变化的数量,我可能会打破神奇的数字.这是一个简化的例子(寄存器集更复杂):

const short mode0 = 0;
const short mode1 = 1;
const short mode2 = 2;

const short state0 = 0;
const short state1 = 4;
const short state2 = 8;
Run Code Online (Sandbox Code Playgroud)

而不是:

set_register(5);
Run Code Online (Sandbox Code Playgroud)

我们有:

set_register(state1|mode1);
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是构建时间版本:

ASSERT(5==(state1|mode1));
Run Code Online (Sandbox Code Playgroud)

更新

@Christian,感谢快速响应,我对C/non-boost环境的答案感兴趣,因为这是驱动程序/内核代码.

c refactoring assert static-assert

25
推荐指数
8
解决办法
2万
查看次数

标签 统计

assert ×1

c ×1

refactoring ×1

static-assert ×1