c++ - `~uintptr_t(value)` 方法体是什么意思?C++
问题描述
typedef uintptr_t disguised_ptr_t;
inline disguised_ptr_t DISGUISE(id value) { return ~uintptr_t(value); }
我最近阅读了 objc 运行时源代码,上面的代码让我很困惑。
解决方案
首先,它对type进行转换(也称为cast)。然后它对结果值进行按位否定(补码)。value
uintptr_t
函数中的代码基本等价于
uintptr_t temporary = value;
return ~temporary;
推荐阅读
- android-studio - 此版本的 Android Studio 无法打开此项目,请使用 Android Studio 3.4 或更高版本重试
- docker - 如何在 GKE Pod 中设置时区
- azureservicebus - 无法使用 SqlFilter 过滤服务总线主题消息
- excel - 如何通过更改在用户表单中循环?
- html - 应用在其父元素中唯一的元素的 CSS 规则
- go - 为什么 Args 在函数 init 之前初始化?
- reactjs - 在 then() 之外共享没有状态的结果响应 API
- r - 绘制一组观测值的平均值和/或中值
- configuration - 具有不同选项的相同规则的 ESLint 错误和警告
- prolog - 'atoms' 的编译时间测试