我在appStore上有较旧的应用程序。我想针对iOS 7更新它,因此我在Xcode 5下打开了它,并在“构建设置”下打开了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中无效

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

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

最佳答案

  • CGRect是{CGPoint,CGSize}。 CGSize为{CGFloat,CGFloat}。 CGFloat是float的typedef,而不是double。
  • fabs声明为extern double fabs(double)

  • 将#define更改为:
    #define IS_IPHONE_5 (fabsf( [ [ UIScreen mainScreen ] bounds ].size.height - ( CGFloat )568.0 ) < FLT_EPSILON)

    关于ios - fabs()在模块下不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19624111/

    10-10 21:14