繁体   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