首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无符号长以支持64位iOS & OSX

无符号长以支持64位iOS & OSX
EN

Stack Overflow用户
提问于 2017-11-03 04:46:19
回答 1查看 677关注 0票数 0

对于我的iOS & OS C++库,无符号long数据类型在64位环境中造成问题。它在32位架构中工作得很好。在GCC阅读有关-mx32编译器旗帜,这将处理所有64位数据类型为32位。在iOS & OS中,是否存在这样的标志来支持32位体系结构中的无符号签名。我已经尝试添加-mx32标志在复旗部分,仍然大小的无符号长是打印为8。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 07:58:26

long的大小由平台ABI定义。苹果公司宣布,你必须支持他们的64位ABI:

  • 在2017年的Mac应用程序的64位要求上,我们宣布提交给Mac应用商店的新应用必须支持2018年1月开始的64位应用程序,Mac应用程序更新和现有应用程序必须支持从2018年6月开始的64位应用。如果您在macOS之外发布应用程序,我们强烈建议分发64位二进制文件,以确保用户能够在未来版本的macOS上继续运行您的应用程序。macOS高级塞拉利昂将是支持32位应用程序而不妥协的最后一个macOS版本。
  • iOS 11上的64位应用程序提醒人们,提交给apps的新iOS应用程序和更新必须支持64位。iOS 11中没有对32位应用程序的支持,以前安装在用户设备上的所有32位应用程序都不会启动。如果你还没有更新你的应用程序在应用商店支持64位,我们建议提交一个更新,这样你的用户可以继续运行你的应用程序在iOS 11,这将在今年秋天的数亿客户手中。

这意味着回到32位的构建在短期内是行不通的。理论上可以构建一个自定义编译器,它的外部有64位ABI,但内部有不同的类型大小。OpenJDK在内部支持这一点,GNU在x86-64上支持类似的东西(尽管它仍然需要内核支持,所以它不是达尔文的一个选项)。但是这需要大量的工作,并且需要对系统头进行大量的调整。

不幸的是,您最好的选择是将软件中的unsigned long替换为可移植类型,如uint32_t

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47088633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档