我在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'不是函数或函数指针
警告:C99中函数'__tg_promote1'的隐式声明无效
警告:函数'__tg_fabs'的隐式声明在C99中无效
当我关闭模块时,一切都像以前一样正常。
有任何帮助吗?我对此非常绝望。 感谢。
答案 0 :(得分:6)
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)