可拉伸常数

use*_*291 5 c++

本指南讨论可拉伸常量

尽可能使用“可拉伸”常量

可伸缩的常数避免了字长变化的问题。

它还提供了一个示例:

const int all_ones = ~0;
const int last_3_bits = ~0x7;
Run Code Online (Sandbox Code Playgroud)

什么是可拉伸常数

Arm*_*gny 0

这是一个旧的建议。您也可以认识到这一点,因为文本使用的是const而不是constexpr

那家伙正在使用 datatype int。这就是棘手的部分。Int可以是2、4、8或者将来可能是16字节。

可拉伸意味着,您有一个小的(或任何数据类型)并且分配的值将是相同的,无论数据类型的实现如何。如果您想要设置所有位,并且您将使用~0,那么这将适用于 8 位或 16 位或 32 位或 64 位值。因此就有了“伸展”这个词。

这应该会使软件更安全。但针对这一要求,还有其他措施。对于安全软件,没有人会使用int。例如,MISRA 规则要求不使用任何内置数据类型。您可以使用类型。无论如何,这样更好。

所以“拉伸”意味着:拉伸(更大)的变量类型具有相同的值。