c++ - 可拉伸常数
问题描述
该指南讨论了可拉伸常量:
尽可能使用“可拉伸”常量
可伸缩常量避免了字长变化的问题。
它还提供了一个示例:
const int all_ones = ~0;
const int last_3_bits = ~0x7;
什么是可拉伸常数?
解决方案
这是一个古老的建议。您也可以识别这一点,因为文本正在使用const
而不是constexpr
.
这家伙正在使用 datatype int
。这是棘手的部分。Int 可以是 2、4、8 或者将来可能是 16 字节。
可拉伸意味着,无论数据类型的实现如何,您都有一个小的(或任何数据类型)并且分配的值将是相同的。如果您想设置所有位,并且您将使用~0
,那么这将适用于 8 位或 16 位或 32 位或 64 位值。因此,“伸展”一词。
这应该使软件更安全。但对于这个要求,还有其他措施。对于安全软件,没有人会使用int
. 例如,MISRA 规则要求不使用任何内置数据类型。你可以使用类型。反正这样更好。
所以“拉伸”意味着:拉伸(更大)变量类型的值相同。
推荐阅读
- php - 图像文件上传在 wamp 服务器上不起作用
- typescript - 使用 Typescript 定义对象模式时遇到问题
- jquery - 如何用css为自定义目录编号?
- android - 如何知道 3D Secure for Stripe 是成功还是失败?
- python - 将参数从 html 页面 url 映射传递到 django 中的视图
- r - 使用 data.table 按组抽样而不重复
- html - 如果我将宽度指定为适合内容,如何从页面中的所有 h4 标签中找到 h4 标签的最大宽度?
- c - c tcpclient连接错误,关于socket,并选择
- java - 如何围绕设置器创建通用方法?
- node.js - UniversalWindowsPlatform (Node.js + Xamarin) 中的文本 CL/RF 错误