在宏中使用时使用未声明的标识符FLT_MAX

时间:2014-05-17 06:35:56

标签: ios objective-c macros

我使用以下代码动态调整标签大小:

CGRect frame = self.myLabel2.frame;
frame.origin.y = self.myLabel1.frame.origin.y + self.myLabel1.frame.size.height + 10;
frame.size = LABEL_SIZE(self.myLabel2);
self.myLabel2.frame = frame;

其中LABEL_SIZE是定义为:

的宏
#define LABEL_SIZE(label) CGSizeMake(280, [label sizeThatFits:CGSizeMake(280, FLT_MAX)].height);

在模拟器(32位)上运行时,代码工作正常。在模拟器(64位)上运行时出现问题。 XCode将 not 显示为警告,但显示为错误,因此甚至无法编译。

我不明白,我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您忘记包含 float.h

#include <float.h>
float a = FLT_MAX;

答案 1 :(得分:-2)

尝试使用CGFLOAT_MAX代替FLT_MAX,如下所示

#define LABEL_SIZE(label) CGSizeMake((CGFloat)280, [label sizeThatFits:CGSizeMake((CGFloat)280, (CGFLOAT_MAX))].height);