我在处理arm64时使用tgmath.h
来处理CGFloat typedef float/double
混乱。
This answer对如何使用它有很好的描述,除了它对我来说根本不起作用。无论如何,我的代码仍在调用math.h
函数。
在花了一些时间查看所有项目编译器设置后,我发现禁用了"模块"功能(@import vs #import - iOS 7)使一切正常。更具体地说,项目设置中的选项在Enable Modules(C and Objective-C)
下拉列表中称为Apple LLVM 5.1 - Language - Modules
。
要查看此问题的快速示例,请下载使用tgmath such as MBProgressHUD的项目,并查看启用模块项目设置时会发生什么。 tgmath.h
次来电被math.h
次来电取代。
我的问题是:
为什么模块会阻止tgmath正确导入?
有没有办法绕过它并同时使用tgmath和模块?我仍然希望能够使用它们。
答案 0 :(得分:3)
我不确定是什么导致了这个问题,但作为一种解决方法,您至少可以禁用您正在使用tgmath.h
的文件的模块:
-fno-modules
以禁用该文件的Clang模块。至少在这种方式下,您仍然可以在大多数项目中获得模块的好处。 (当然,假设您在大多数源文件中不需要tgmath.h
。)
答案 1 :(得分:1)
它可能已经在您的数学库中,名称为ctgmath:Link