尝试使用XCode 5构建项目时出现以下错误。
Use of undeclared identifier 'FLT_EPSILON'
我已经检查过了,FLT_EPSILON(它在Xcode中显示为褐色)在“float.h”文件中定义。
我做错了什么?
这是使用FLT_EPSILON的代码:
if (someTimeInterval < 0.03 - FLT_EPSILON) {
someTimeInterval = 0.1;
}
我发现这是因为我试图在iPhone 5S模拟器(64 BIT)上测试它。
我不太了解使用64位模拟器时的差异。 我应该包括什么而不是FLT_EPSILON - 为什么它不适用于64位?
答案 0 :(得分:3)
解决方案是禁用项目中的模块。为此,请转到构建设置并将“启用模块”设置为“否”。
这是一个clang
错误。模块(-fmodules
标志)仍然是实验性功能,当您混合使用Objective-C和C / C ++模块时,可能会出现一些错误。
在github上查看我的演示项目:TestEpsilon
第一个目标使用模块,第二个目标没有。为了确保我们得到“干净”的构建,我在预构建脚本中添加了DerivedData
和ModulesCache
清理。
答案 1 :(得分:2)
这对我有用:
#ifndef FLT_EPSILON
#define FLT_EPSILON __FLT_EPSILON__
#endif
(这是它在float.h
中的定义)
答案 2 :(得分:1)
我不知道为什么这对64位设备不起作用。
但这是解决方案:
确保安装了MobileCoreServices.framework,然后它应该可以正常工作
导入
<MobileCoreServices/MobileCoreServices.h>