我知道这是一个奇怪的问题,但我想知道是否有可能使用g ++在Solaris上使用64位编译生成32位指针。最终的对象需要是64位,但是我的指针偏移之一在Solaris上更大,如果我使用64位编译则在Windows中。这引起了一个大问题。我想知道是否有可能在我的64位编译对象中制作一个32位指针。
答案 0 :(得分:1)
指针大小是目标体系结构的属性,因此不能混用和匹配32位和64位指针。我强烈建议你重新思考你的设计(这就像通常的错误一样,将指针转换成整数和背面。)理论上你可以使用“有限范围”的偏移,但是请再问自己为什么,以及什么是更好的方法这样做。
答案 1 :(得分:0)
您无法更改常规指针,指针的大小为sizeof(void *)
。如果可以的话,在64位系统上用32位指针做什么呢?
你的意思是C中的指针,还是你指的是指向文件偏移的指针?
答案 2 :(得分:0)
如果你有指针类型,那么你不应该在64位程序中使它成为32位。如果它只是一些与内存模型无关的偏移量,那么您可以在不同平台上使用具有稳定大小的不同类型,例如uint32_t
。
答案 3 :(得分:0)
在64位机器上“需要”32位指针是没有意义的。我也不明白这一行:
最终对象需要为64位
我会仔细看看并试着修复你的错误。如果您发布一些示例代码,我们可能会提供更多帮助。