• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:51:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

根据这个问题的答案:

CGFloat-based math functions?

我只需要#include 来解决这个问题,并且可能将fabsf 更改为fabs。我至少有一个文件似乎没有帮助。我仍然收到警告:implicit conversion lost floating-point precision 'double' to 'CGFloat' aka (float). 这是产生该警告的行:

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

有没有其他人遇到过这个?你是怎么解决的?我宁愿不禁用此警告,也不希望在我的代码中添加大量类型转换。



Best Answer-推荐答案


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

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

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

#define __MATH_H__

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap