gpt4 book ai didi

c++ - 设置未知长度整数类型的高位

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:25 24 4
gpt4 key购买 nike

我正在寻找一种可移植且优雅的方法来在我们不知道指针是 32 位还是 64 位的情况下设置指针类型的高位。

我正在处理我们从一家倒闭公司继承的一些遗留代码。它曾经在 32 位环境中工作,现在我们也需要一个工作的 64 位版本。这意味着比以前更大的指针,以及更大的魔数(Magic Number)来表示无效值。目前最好的提案大致如下所示:

#if ENVIRONMENT_IS_32_BIT
#define INVALID_PTR_CODE 0x80000000
#else
#define INVALID_PTR_CODE 0x8000000000000000
#endif

正如我所说,我希望有更优雅的东西,并且可以跨不同的编译器(至少是 MSVC、gcc、clang)工作。一个完美的解决方案适用于任何环境/指针大小。

最佳答案

static_cast<uintptr_t>(1) << (CHAR_BIT * sizeof(void*) - 1)

会做的。

(请注意,当前的 Intel 芯片内部有 48 位指针。)

关于c++ - 设置未知长度整数类型的高位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52894381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com