gpt4 book ai didi

c - 在 32 位模式下使用 64 位 uint 作为指针值?

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:54 27 4
gpt4 key购买 nike

我正在实现一种基于 C 的编程语言,我想实现一种编译模式,该模式与它是在 32 位还是 64 位模式下运行无关。我所有的数据类型都有明确的宽度,所以二进制兼容性没有问题,唯一有问题的方面是指针。

那么,即使在 32 位模式下,我也需要明确的 64 位指针实现怎么办? IIRC 几乎所有内存 Controller 都至少是 64 位的,因此读取和写入仍将是一个周期,但整数运算呢?

除了增加内存占用之外,这种方法是否有任何潜在的缺点?还有其他潜在的注意事项吗?

编辑:

让我澄清一下情景背景——最初的问题有点离题。我需要“二进制不可知论模式” 使解释器字节码能够动态桥接不同的 native 二进制文件。自然地,在 32 位二进制文​​件中使用 64 位二进制文​​件的指针几乎没有意义,但指针的宽度会影响其他数据位置的偏移量,这将是主要交换的内容。所以简而言之,想法如下 - 为了使数据结构二进制兼容 32 位和 64 位二进制文​​件,浪费了一些空间。

最佳答案

您可以使用 uintptr_t类型。

这是一个 unsigned int保证与指针大小相同。

它的定义在 C++11 和 C99 中是标准的(使用 <stdint.h> 头文件)。

如果希望指针始终为 64 位,可以使用 uint64_t .但是,这在具有 128 位指针的系统上是不安全的。

关于c - 在 32 位模式下使用 64 位 uint 作为指针值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118339/

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