64位Solaris编译中的32位指针

时间:2009-10-28 18:55:46

标签: c++

我知道这是一个奇怪的问题,但我想知道是否有可能使用g ++在Solaris上使用64位编译生成32位指针。最终的对象需要是64位,但是我的指针偏移之一在Solaris上更大,如果我使用64位编译则在Windows中。这引起了一个大问题。我想知道是否有可能在我的64位编译对象中制作一个32位指针。

4 个答案:

答案 0 :(得分:1)

指针大小是目标体系结构的属性,因此不能混用和匹配32位和64位指针。我强烈建议你重新思考你的设计(这就像通常的错误一样,将指针转换成整数和背面。)理论上你可以使用“有限范围”的偏移,但是请再问自己为什么,以及什么是更好的方法这样做。

答案 1 :(得分:0)

您无法更改常规指针,指针的大小为sizeof(void *)。如果可以的话,在64位系统上用32位指针做什么呢?

你的意思是C中的指针,还是你指的是指向文件偏移的指针?

答案 2 :(得分:0)

如果你有指针类型,那么你不应该在64位程序中使它成为32位。如果它只是一些与内存模型无关的偏移量,那么您可以在不同平台上使用具有稳定大小的不同类型,例如uint32_t

答案 3 :(得分:0)

在64位机器上“需要”32位指针是没有意义的。我也不明白这一行:

  

最终对象需要为64位

我会仔细看看并试着修复你的错误。如果您发布一些示例代码,我们可能会提供更多帮助。