<分区>
我在一个安全关键的嵌入式 C 项目中,有一个关于检测 boolean 变量中的内存损坏(例如缓冲区溢出)的讨论。众所周知,在 C 中,“boolean”类型实际上是一个 N 位整数,这意味着它可能有 2N-2 个无效值。 例如。如果您将 FALSE 声明为 0 并将 TRUE 声明为 1(通过宏、常量或枚举),则可以说 <0(在签名类型的情况下)或 >1 是内存损坏(或错误)的结果。
所以理论上应该可以构建这样的故障捕获代码块:
if (b == TRUE) { /* Good, do something */ }
else if (b == FALSE) { /* Good, but don't do anything */ }
else { /* Memory corruption. Deal with it. */ }
或者用 switch-case 来做。状态变量和其他枚举类型是强制性的,但 boolean 值肯定会增加很多代码,我的问题是 - 这值得付出努力吗?