【问题标题】:iOS 64 bit support with C framework libxml2 "implicit conversion loses integer precision"iOS 64 位支持与 C 框架 libxml2“隐式转换失去整数精度”
【发布时间】:2015-02-11 18:11:54
【问题描述】:

我的应用程序使用 libxml2,其中包含一个函数“xmlReadMemory(const char * buffer, 整数大小, 常量字符 * 网址, const char * 编码, int 选项)”

我确实有一个“大小”要发送,但它是一个 NSUInteger

这个框架是用 C 编写的,所以它希望我发送一个 int,这会在我的应用程序中引发一个警告,因为我现在将 arm64 包含为一个有效的架构:“隐式转换失去整数精度: NSUInteger (又名'unsigned long') 到 int"。是否有解决此警告的安全方法?

框架 API 链接:http://www.xmlsoft.org/html/libxml-parser.html

【问题讨论】:

  • 这似乎也是一个类似的问题:stackoverflow.com/questions/24148817/…
  • int isize = (int) usize; if (isize < 0 || isize != usize) Handle_Error(); else xmlReadMemory(buffer, isize, URL, rncoding, options);

标签: ios objective-c c 32bit-64bit libxml2


【解决方案1】:

只要您确信您永远不需要传递大于最大 32 位整数的值(非常不可能),只需通过在函数中的参数前面添加 (int) 将其转换为 int称呼。一个无符号的 32 位值超过 4 GB,这比 iPhone 上的内存还多,并且需要 HOURS 才能通过蜂窝网络下载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 2013-10-22
    • 2019-02-09
    • 2017-03-02
    • 2012-05-23
    相关资源
    最近更新 更多