gpt4 book ai didi

ios - 我需要做什么才能在 iOS 上使用 tgmath?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:43:44 25 4
gpt4 key购买 nike

我正在编译我的第一个启用了 64 位支持的项目。我遇到了一堆关于隐式转换为 float 的编译器警告。发生这种情况是因为我正在使用 fabsf() 并将结果分配给 CGFloat(在新的 64 位架构上是 double 的,而不是 float )。

根据这个问题的回答:

CGFloat-based math functions?

我只需要 #include <tgmath.h>解决这个问题并可能改变fabsffabs .我至少有一个文件似乎没有帮助。我仍然收到警告:implicit conversion loses floating-point precision 'double' to 'CGFloat' aka (float).这是生成该警告的行:

CGFloat deltaX = fabs(item.center.x-point.x);

还有其他人遇到过这个吗?你是怎么解决的?我宁愿不禁用此警告或在我的代码中乱放大量类型转换。

最佳答案

我猜,您使用的是 CGPoint 类型,因此转换不会发生在 fabs 中(DOUBLE -> FLOAT),而是在分配 CGFloat = DOUBLE 时发生。这可能是因为编译器使用了 math.h 中的 fabs,它对 double 进行操作。

math.h 的问题在于它是由 OSX header 内部导入的(如果我没记错的话是 carbon),所以我猜某些 iOS header 也可能会这样做。快速查看后,基本的框架集似乎没有导入 math.h,所以您可能应该寻找它是否被手动导入。如果它是由某些系统库在内部导入的,您可能无法在单个实现文件中使用这些库和 tgmath。

如果你想检查是否有一些 math.h 依赖项,你可以使用一个肮脏的技巧来防止它被包含 - 将此行添加到文件中(或者更好地在前缀文件之上):

#define __MATH_H__

关于ios - 我需要做什么才能在 iOS 上使用 tgmath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22267237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com