【问题标题】:In Objective-C, fabsf() has the wrong result type在 Objective-C 中,fabsf() 的结果类型错误
【发布时间】:2016-02-01 17:42:37
【问题描述】:

如果我在 Xcode 的调试控制台中输入

(lldb) p (float)fabsf(-5.0f)
(float) $22 = 0
(lldb) p (double)fabsf(-5.0f)
(double) $23 = 5

第一个结果转换为浮动(没有转换,p 命令无法识别fabsf 返回类型)无论参数如何都是错误的

但在库头中,fabs 的返回类型显然是一个浮点数。有人可以解释一下吗?

ios9.2: 数学.h

...
extern float fabsf(float);
extern double fabs(double);
extern long double fabsl(long double);
...

是否有一些我不知道的 lldb 机制或问题,或者真的是语言实现问题(猜不是......)?

【问题讨论】:

  • 我无法重现你的结果,在模拟器上运行。
  • 我确实在 iPhone 6s、Xcode 7.2 上复制过。等待答复))
  • 可直接在 OS X 下的 lldb 中重现。其他float 返回函数(例如fmaxf)和强制转换也会发生同样的情况。我建议一个错误,您应该向 Apple (bugreport.apple.com) 报告
  • 我在 apple bugtracker 上填写了一张票,但他们的速度比他们的应用审查流程慢。这是很多。

标签: objective-c


【解决方案1】:

很确定 Xcode 7 中存在 lldb 控制台的错误,并为此创建了 a ticket

Xcode 8.0 中不再存在此问题。

【讨论】:

    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 2017-05-15
    • 1970-01-01
    • 2021-11-03
    • 2018-09-05
    相关资源
    最近更新 更多