2009-10-28 163 views
1

我知道这是一个奇怪的问题,但我想知道是否有可能在Solaris上使用g ++编译64位的32位指针。最终的对象需要是64位,但是我的指针偏移量中的一个在Solaris上越来越大,如果我使用64位编译,它在窗口中。这是一个很大的问题。我想知道是否有可能在我的64位编译对象中创建一个32位指针。32位指针在64位Solaris编译

+1

你应该修改这个问题来谈论你真正想做的事情 - 可能比依靠指针大小在平台之间相同的方法更好。描述目标,而不是步骤(http://catb.org/~esr/faqs/smart-questions.html#goal)。 – 2009-10-28 19:23:14

+0

在这个问题中缺乏具体细节,很难回答。什么是“大问题”?它如何防止指针偏移量在64位窗口中变大?即使你的问题的第一部分没有多大意义“是否有可能在64位编译中创建一个32位指针”......我无法弄清楚你的意思。 – 2009-10-29 12:45:21

回答

0

您不能更改常规指针,指针的大小是sizeof(void *)。如果可以的话,你将在64位系统上使用32位指针做什么?

你是指C中的指针还是你可能指向文件偏移的指针?

1

指针大小是您的目标架构的属性,因此您不能混合和匹配32位和64位指针。我强烈建议重新考虑你的设计(这听起来像将指针指向整数和返回的常见错误)。理论上你可以使用“有限延伸”偏移量,但是再次请问自己为什么,以及什么是更好的方法做到这一点。

0

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

0

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

最终的目标将需要64位然而

我会仔细看看,并尝试修复您的最终的bug。如果您发布了一些示例代码,我们可能会提供更多帮助。