对于我的iOS & OS C++库,无符号long数据类型在64位环境中造成问题。它在32位架构中工作得很好。在GCC阅读有关-mx32编译器旗帜,这将处理所有64位数据类型为32位。在iOS & OS中,是否存在这样的标志来支持32位体系结构中的无符号签名。我已经尝试添加-mx32标志在复旗部分,仍然大小的无符号长是打印为8。
谢谢。
发布于 2017-11-03 07:58:26
long的大小由平台ABI定义。苹果公司宣布,你必须支持他们的64位ABI:
这意味着回到32位的构建在短期内是行不通的。理论上可以构建一个自定义编译器,它的外部有64位ABI,但内部有不同的类型大小。OpenJDK在内部支持这一点,GNU在x86-64上支持类似的东西(尽管它仍然需要内核支持,所以它不是达尔文的一个选项)。但是这需要大量的工作,并且需要对系统头进行大量的调整。
不幸的是,您最好的选择是将软件中的unsigned long替换为可移植类型,如uint32_t。
https://stackoverflow.com/questions/47088633
复制相似问题