首页 > 解决方案 > 可拉伸常数

问题描述

该指南讨论了可拉伸常量

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

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

它还提供了一个示例:

const int all_ones = ~0;
const int last_3_bits = ~0x7;

什么是可拉伸常数

标签: c++

解决方案


这是一个古老的建议。您也可以识别这一点,因为文本正在使用const而不是constexpr.

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

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

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

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


推荐阅读