如果启用了模块,则tgmath.h不起作用
我看着使用tgmath.h
处理与tgmath.h
处理CGFloat typedef float/double
乱。
这个答案对如何使用它有一个很好的描述,除了它对我没有任何作用。 不pipe怎样,我的代码仍然在调用math.h
函数。
花了一些时间看看所有的项目编译器设置后,我发现禁用“模块”function( @import vs #import – iOS 7 )使这一切工作。 更具体地说,项目设置中的选项称为Apple LLVM 5.1 - Language - Modules
下拉菜单中的Enable Modules(C and Objective-C)
。
要查看此问题的简单示例,请下载使用tgmath的项目( 如MBProgressHUD) ,并查看启用模块项目设置时会发生的情况。 tgmath.h
调用被定期的math.h
调用取代。
我的问题是:
-
为什么模块不能正确导入tgmath?
-
有没有办法避开它,并使用tgmath和模块? 我想仍然可以使用它们。
我不确定是什么导致了这个问题,但作为一种解决方法,你至less可以禁用你正在使用tgmath.h
文件的模块:
- 在Xcode中导航到目标的Build Phases选项卡。
- 在“编译源”阶段下,find源文件。
- 双击源文件并在Compiler Flagspopup窗口中键入
-fno-modules
以禁用该文件的Clang模块。
至less这样你在大部分项目中仍然可以获得模块的好处。 (当然,这是假设您在大多数源文件中不需要tgmath.h
。)
它可能已经在你的math库中名为ctgmath: Link