1

我在 appStore 上有较旧的应用程序。我想为 iOS 7 更新它,所以我在 Xcode 5 下打开它,并在 Build Settings 下打开了 Objective-c 模块。没有它,编译会很慢。

但这会导致 fabs() 函数出现问题,我在 *-Prefix.pch 文件中定义的一个 makro 中使用了该函数:

#define IS_IPHONE_5 (fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON)

当我调用这个 makro 时,由于 fabs() 函数,它会导致错误:

错误:调用的对象类型“int”不是函数或函数指针
警告:函数“__tg_promote1”的隐式声明在 C99 中无效
警告:函数“__tg_fabs”的隐式声明在 C99 中无效

当我关闭模块时,一切都像以前一样正常。

有什么帮助吗?我对此感到绝望。谢谢。

4

1 回答 1

6
  • CGRect 是 { CGPoint, CGSize }。CGSize 是 { CGFloat, CGFloat }。CGFloat 是浮点数的 typedef,而不是双精度数。

  • fabs被声明为extern double fabs(double),

将#define 更改为:

#define IS_IPHONE_5 (fabsf( [ [ UIScreen mainScreen ] bounds ].size.height - ( CGFloat )568.0 ) < FLT_EPSILON)

于 2013-10-27T23:01:50.627 回答