【发布时间】:2016-08-05 14:05:11
【问题描述】:
如果我减去两个 void 指针,我会得到指针位置之间的相对距离(至少在我的测试系统上)。我应该使用什么类型来存储结果,以便与 64 位系统兼容? size_t 是正确的类型还是很长?
背景:我们需要检查给定的 void 指针是否可以安全地用作双指针。我们曾经将指针转换为 int 并检查低三位是否为零,但是我们当前的编码标准不再允许将指针转换为整数类型。我正在考虑计算 void 指针和 NULL 指针之间的差异,并检查该差异是否可被 8 整除。假设 NULL 指针始终是 8 字节对齐的?
【问题讨论】:
-
“我们当前的编码标准不再允许将指针转换为整数类型。” --> 太糟糕了,你不能投到
uintptr_t。