首页 > 解决方案 > `~uintptr_t(value)` 方法体是什么意思?C++

问题描述

typedef uintptr_t disguised_ptr_t;
inline disguised_ptr_t DISGUISE(id value) { return ~uintptr_t(value); }

我最近阅读了 objc 运行时源代码,上面的代码让我很困惑。

标签: c++

解决方案


首先,它对type进行转换(也称为cast)。然后它对结果值进行按位否定(补码)。valueuintptr_t

函数中的代码基本等价于

uintptr_t temporary = value;
return ~temporary;

推荐阅读