簡體   English   中英

64位Solaris編譯中的32位指針

[英]32 bit pointer in a 64 bit Solaris compile

我知道這是一個奇怪的問題,但是我想知道是否有可能在使用g ++的Solaris上以64位編譯方式生成32位指針。 最終對象將需要為64位,但是如果我確實使用64位進行編譯,那么我的指針偏移量之一在Solaris上將變得更大,然后在Windows中變為。 這引起了很大的問題。 我想知道是否有可能在64位編譯對象中創建32位指針。

指針大小是目標體系結構的屬性,因此您不能混合和匹配32位和64位指針。 我強烈建議重新考慮您的設計(聞起來像是將指針轉換為整數然后返回的常見錯誤。)從理論上講,您可以使用“有限范圍”偏移量,但是請再次問自己為什么,什么是更好的方法做到這一點。

您不能更改常規指針,指針的大小為sizeof(void *) 如果可以的話,在64位系統上使用32位指針該怎么辦?

您是指C語言中的指針,還是指文件偏移量的指針?

如果在那里有指針類型,則不應在64位程序中將其設置為32位。 如果僅僅是與內存模型無關的偏移量,則可以在平台上使用大小穩定的其他類型,例如uint32_t

“需要” 64位計算機上的32位指針沒有任何意義。 我也不明白這一行:

最終對象將需要為64位

我會仔細研究一下,然后嘗試修復該錯誤。 如果您發布一些示例代碼,我們可能會提供更多幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM