将指针转换为整数
在需要将 void* 参数转换为合适的类型的情况下,至关重要的是确保不同机器架构之间的兼容性。
在 64 位机器上,将 void* 转换为 int 可能会导致精度损失。为了解决这个问题,现代 C 方法涉及使用reinterpret_cast<:uintptr_t>。这确保了可移植且高效的转换。
正确的整数类型:
要将指针正确存储为整数,适当的类型是 uintptr_t 或 intptr_t,在 < 中定义;stdint.h>对于 C99 或 C 11 的 std 命名空间。
正确的转换运算符:
在 C 中,reinterpret_cast 是指针转换的首选转换。避免使用 C 类型。
示例:
#include <cstdint> void *p; std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
相关问题:
以上是如何安全地将 void* 指针转换为 C 中的整数?的详细内容。更多信息请关注PHP中文网其他相关文章!