2009-10-28 165 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。如果您發佈了一些示例代碼,我們可能會提供更多幫助。