gpt4 book ai didi

C boolean 无效值处理

转载 作者:行者123 更新时间:2023-12-05 07:08:28 27 4
gpt4 key购买 nike

<分区>

我在一个安全关键的嵌入式 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 值肯定会增加很多代码,我的问题是 - 这值得付出努力吗?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com